支持外跳浏览器打开

This commit is contained in:
Tw93
2022-11-15 19:27:55 +08:00
parent 4c8eb3cc67
commit b6d71531b3
4 changed files with 32 additions and 2 deletions

23
src-tauri/Cargo.lock generated
View File

@@ -62,6 +62,7 @@ dependencies = [
"tauri",
"tauri-build",
"tauri-utils",
"webbrowser",
"wry 0.21.1",
]
@@ -3267,6 +3268,22 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "webbrowser"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a0cc7962b5aaa0dfcebaeef0161eec6edf5f4606c12e6777fd7d392f52033a5"
dependencies = [
"jni 0.20.0",
"ndk-context",
"objc",
"raw-window-handle",
"url",
"web-sys",
"widestring",
"winapi",
]
[[package]]
name = "webkit2gtk"
version = "0.18.2"
@@ -3352,6 +3369,12 @@ dependencies = [
"windows-metadata",
]
[[package]]
name = "widestring"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8"
[[package]]
name = "winapi"
version = "0.3.9"

View File

@@ -20,6 +20,7 @@ serde = { version = "1.0.145", features = ["derive"] }
tauri = { version = "1.1.1", features = ["api-all"] }
wry = "0.21.1"
tauri-utils = "1.1.1"
webbrowser = "0.8.2"
[features]
# by default Tauri runs in production mode

View File

@@ -84,6 +84,9 @@ fn main() -> wry::Result<()> {
} else {
window.set_fullscreen(Some(Fullscreen::Borderless(None)));
}
} else if req.starts_with("open_browser"){
let href = req.replace("open_browser:", "");
webbrowser::open(&href).expect("no browser");
}
};

View File

@@ -1,5 +1,3 @@
// @ts-check
/**
* @typedef {string} KeyboardKey `event.key` 的代号,
* 见 <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values>
@@ -133,6 +131,11 @@ window.addEventListener('DOMContentLoaded', (_event) => {
const href = origin.href;
if (href) {
origin.target = '_self';
//额外处理下 twitter 的外跳,对于其他需要外跳的可以改这里成对应域名
if(location.host === "twitter.com" && href.indexOf("twitter.com")===-1){
e.preventDefault();
window.ipc.postMessage(`open_browser:${href}`);
}
}
});
});