我有一个基于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。还有其他人遇到过同样的问题吗?
答案 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}`);
});
});