在 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 是否应转发到默认浏览器。
我把一个 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 是否应转发到默认浏览器。