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

Force open link in external browser in ElectronJS application

我把一个 webapp 放到了 ElectronJS 框架中。在webapp(实际上是网页)中有一些links target=_blank。但是,当我单击 link 时,它会打开另一个 Electron 浏览器 window。预计我希望 link 在默认网络浏览器中显示。

我能想到的是捕获此类导航事件,然后将消息发送到主浏览器 window 并让它生成默认浏览器实例以显示 link。

我觉得这有点复杂。我正在寻找一种更简单的方法来做到这一点。

您的想法是正确的,您需要收听 new-window event 并将 URL 转发到默认浏览器。你会像这样在主进程中实现它:

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 事件实际上提供了有关要打开的 window 的一些附加信息(而不仅仅是 URL),您可能需要采取一些考虑该信息以确定 URL 是否应转发到默认浏览器。