电子 - 如何处理页面弹出窗口

时间:2017-10-19 19:46:57

标签: javascript electron

内部电子我正在加载旧网站。

代码很简单: browserWindow.loadURL('https://myOldSite.com');

当用户点击按钮时,此旧网站会打开一个弹出窗口(例如<a target="_blank"...>或甚至js window.open)。

当弹出窗口打开时,我看到屏幕上闪烁着一些东西,但它并没有保持打开状态。我有两个问题:

  1. 有没有办法防止这种闪光?
  2. 有没有办法控制此弹出窗口并将其显示给用户?或者以某种方式获取其URL?

2 个答案:

答案 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选项。

来自the documentation

  

preload String(可选) - 指定在页面中运行其他脚本之前加载的脚本。无论是打开还是关闭节点集成,此脚本始终都可以访问节点API。该值应该是脚本的绝对文件路径。关闭节点集成时,预加载脚本可以将节点全局符号重新引入全局范围。请参见示例here

您的预加载脚本可以在页面中搜索您提到的链接并更改其行为。 (即,将事件发送到您的主要流程,而不是做您喜欢的任何操作;打开一个窗口等)。