将指向外部 URL 的超文本链接点击重新路由到 Electron 应用程序以外的另一个浏览器

Posted

技术标签:

【中文标题】将指向外部 URL 的超文本链接点击重新路由到 Electron 应用程序以外的另一个浏览器【英文标题】:Re-route hypertext link clicks to external URLs to another browser than the Electron app 【发布时间】:2021-03-25 07:29:47 【问题描述】:

我有一个 Electron BrowserWindow,它包含 UI 元素和一个 BrowserView,创建于:

bv = createBrowserView('https://example.com');
...
browserWindow.setBrowserView(bv);

如何将此BrowserView 限制为***.example.com/*** 形式的URL,即留在域example.com

更准确地说,如果用户点击超出该域的超文本链接,它应该在外部应用程序中打开,例如系统的默认浏览器,而不是在 Electron 应用程序中。

如何使用 Electron BrowserView 做到这一点?

【问题讨论】:

【参考方案1】:

这行得通:

bv.webContents.on('will-navigate', (event, url) => 
    console.log('will-navigate', url);
    if (condition_on_the_url) 
        shell.openExternal(url);  // length limit on Windows: https://www.electronjs.org/docs/api/shell#shellopenexternalurl-options
        event.preventDefault();
    
);

注意:当用户单击带有target="_blank" 的链接时,事件new-window 也很有用。

【讨论】:

以上是关于将指向外部 URL 的超文本链接点击重新路由到 Electron 应用程序以外的另一个浏览器的主要内容,如果未能解决你的问题,请参考以下文章

Xampp - 将外部 url 重定向到 localhost

使用指向 CSV 文件的 URL 链接到外部数据

如何检查 url 是不是指向外部角度应用程序

用指向 URL 的链接替换文本中的 URL

怎样在vue中跳转到外部链接

强制外部下载 url