From b6d71531b3b97f86577ca67bfdc0c6e457e0d4c8 Mon Sep 17 00:00:00 2001 From: Tw93 Date: Tue, 15 Nov 2022 19:27:55 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=94=AF=E6=8C=81=E5=A4=96?= =?UTF-8?q?=E8=B7=B3=E6=B5=8F=E8=A7=88=E5=99=A8=E6=89=93=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/Cargo.lock | 23 +++++++++++++++++++++++ src-tauri/Cargo.toml | 1 + src-tauri/src/main.rs | 3 +++ src-tauri/src/pake.js | 7 +++++-- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 490ae72..c29bb4a 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -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" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index f593931..01ae264 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -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 diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 53384cb..4f54c31 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -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"); } }; diff --git a/src-tauri/src/pake.js b/src-tauri/src/pake.js index 2200c97..b2610df 100644 --- a/src-tauri/src/pake.js +++ b/src-tauri/src/pake.js @@ -1,5 +1,3 @@ -// @ts-check - /** * @typedef {string} KeyboardKey `event.key` 的代号, * 见 @@ -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}`); + } } }); });