Electron Webview新窗口事件以URL形式返回about:blank

时间:2019-01-08 10:10:16

标签: javascript electron

我有一个基于Electron的浏览器,如应用程序,它使用Electron的标记来呈现客户端url。我有使用多个webview标签的自定义标签设置。

如电子文档中所述,我正在使用new-window事件来处理打开新标签页中的URL的页面请求。可以通过window.open或<a target='_blank'>之类的外部链接来请求。

我的代码在大多数情况下都可以正常工作,当指定了url并且以后没有动态添加时。

const webview = document.querySelector('webview')

webview.addEventListener('new-window', (e) => {
  const url = e.url;
  // used url to render new tabs.
})

最近我有一个客户端登录URL,加载时有一个按钮。该按钮没有锚标记,也没有指定预定义的url。当以chrome打开时,单击按钮会导致在全新的窗口中打开外部链接。新窗口会在网址栏中短暂显示“ about:blank”,然后重定向到实际网址。
当我尝试在电子Web视图中使用new-window事件拦截相同的外部URL时,该事件返回的URL为about:blank,并且我无法访问重定向的URL。还有其他人遇到过同样的问题吗?

2 个答案:

答案 0 :(得分:0)

我在BrowserWindow上遇到了同样的问题,我使用了nativeWindowOpen标志(目前是实验性的)解决了

它也可用于webviews

https://electronjs.org/docs/all#using-chromes-windowopen-implementation

答案 1 :(得分:0)

对于我来说,我可以通过为弹出窗口的Web内容添加一个will-navigate侦听器来找到最终打开的URL:

app.on("web-contents-created", (webContentsCreatedEvent, contents)=>{
    contents.on("will-navigate", function(e, reqUrl) {
        console.log(`Popup is navigating to: ${reqUrl}`);
    });
});