electron版本:13
环境:win10 64位
- 起因:
- 新窗口引入了第三方iframe,第三方地址是不可控的,因为第三方注册了window.onbeforeunload事件导致窗口不能正常关闭。
- 解决方法:
- 开始是想在自己的页面写个 window.onbeforeunload 事件给重置掉iframe页面的事件,后来发现其他问题,就是即使不加载iframe页面,window.onbeforeunload事件在当前页面不管怎么写,窗口都不会关闭,按照官方文档的写法也不可以,删了window.onbeforeunload事件 不加载iframe第三方页面是可以正常关闭的,没搞清楚是哪里错了。
- 后来想到换一种方案,阅读文档发现窗口支持强制关闭,(因为之前测试过调用win.close也会关闭不了),试了下强制关闭果然可以,文档如下:
- 代码
- 主进程代码
// 关闭窗口 ipcMain.on("win-close", function(e) { console.log('关闭') win.destroy(); });
-
- 页面代码
window.onbeforeunload = (e) => { ipcRenderer.send("win-close"); e.returnValue = undefined };
参考文档地址:https://www.bookstack.cn/read/electronjs-13.0-zh/9ca093dc663dae31.md