因为tauri-apps/plugin-opener这个查看需要配置权限,限制哪些窗口才可以单独打开url,挺烦的,看了底层的代码逻辑,其实完全可以通过自定义实现这个功能,还不需要权限校验。
直接添加open这个依赖库:
open依赖库地址:crates.io/crates/open
然后写一个command:
#[tauri::command]
pub async fn open_url(_: tauri::AppHandle, url: String) {
open::that(url).unwrap();
}
最后在注入的js脚本中添加:
const { invoke } = window.__TAURI__.core
if ('__TAURI__' in window) {
const hookClick = (e) => {
const origin = e.target.closest('a')
const isBaseTargetBlank = document.querySelector(
'head base[target="_blank"]'
)
console.log('origin', origin, isBaseTargetBlank)
invoke('open_url', { url: origin.href })
}
document.addEventListener('click', hookClick, { capture: true })
}
代码中的含义就是:
拦截url打开跳转的链接,然后调用open_url这个函数,就好了
传入的是文件夹或文件路径,就会使用系统默认的程序打开,传入的是url,就会使用默认的浏览器打开