在Electron运行的子页面无法访问window.opener解决方案

我们的首页有一个window.open打开子页面后反向刷新父页面的功能,但是主页面如果开启了nodeIntegration=true,这个时候再设置nativeWindowOpen是不启作用的。再被window.open打开的页面无法访问window.opener(返回null)的。这个反向刷新还会调用window.close关闭自己也不启作用。类似下面的代码:

window.opener = null
window.open("", "_self")
window.close()

我目前想到的解决方案就是在子页面判断如果window.opener为空,则调用和Electron交互的关闭窗口代码。在Electron中订阅窗体的close事件,如果当前的地址是我们通用处理反向刷新的地址,则获取父页面的webContents向对应的webFrame发送一个执行JavaScript的消息实现执行window.opener对应的方法。

posted @ 2019-10-16 09:42  junchu25  阅读(2291)  评论(0编辑  收藏  举报