内部电子我正在加载旧网站。
代码很简单:
browserWindow.loadURL('https://myOldSite.com');
当用户点击按钮时,此旧网站会打开一个弹出窗口(例如<a target="_blank"...>
或甚至js window.open
)。
当弹出窗口打开时,我看到屏幕上闪烁着一些东西,但它并没有保持打开状态。我有两个问题:
答案 0 :(得分:1)
首先,它应该按预期工作。 window.open
和<a target="_blank" ... >
都会打开一个新的电子BrowserWindow。
但是,您可以通过'new-window'
event操作主进程中的窗口打开过程:
myBrowserWindow.webContents.on('new-window', (event, url) => {
event.preventDefault()
const win = new BrowserWindow({show: false})
win.once('ready-to-show', () => win.show())
win.loadURL(url)
event.newGuest = win
})
此示例正常显示新窗口,但您可以使用可用的回调参数实现更多功能
答案 1 :(得分:0)
一种解决方案是在创建preload
时使用BrowserWindow
选项。
preload
String(可选) - 指定在页面中运行其他脚本之前加载的脚本。无论是打开还是关闭节点集成,此脚本始终都可以访问节点API。该值应该是脚本的绝对文件路径。关闭节点集成时,预加载脚本可以将节点全局符号重新引入全局范围。请参见示例here。
您的预加载脚本可以在页面中搜索您提到的链接并更改其行为。 (即,将事件发送到您的主要流程,而不是做您喜欢的任何操作;打开一个窗口等)。