将指向外部 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 应用程序以外的另一个浏览器的主要内容,如果未能解决你的问题,请参考以下文章