在ElectronJS应用程序中强制打开外部浏览器中的链接

时间:2016-11-02 00:49:01

标签: javascript electron

我把一个webapp放到ElectronJS框架中。在webapp(实际上是网页)中有一些链接target=_blank。但是,当我单击该链接时,它将打开另一个Electron浏览器窗口。我希望链接能够在默认的Web浏览器中显示。

我能想到的是捕获这样的导航事件,然后将消息发送到主浏览器窗口,让它生成一个默认的浏览器实例来显示链接。

我认为这有点复杂。我正在寻求一种更简单的方法。

1 个答案:

答案 0 :(得分:5)

您有正确的想法,您需要收听new-window event并将网址转发到默认浏览器。您可以在主流程中实现它,如下所示:

import { shell } from 'electron'

mainWindow.webContents.on('new-window', (event, url) => {
  // stop Electron from opening another BrowserWindow
  event.preventDefault()
  // open the url in the default system browser
  shell.openExternal(url)
})

请注意,new-window事件实际上提供了有关要打开的窗口(而不仅仅是URL)的一些其他信息,您可能需要考虑其中的一些信息以确定URL是否有用应该转发到默认浏览器。