electron onbeforeunload 关闭不了页面,如何强制关闭窗口

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

 


  

 

posted @ 2021-11-30 11:22  萧乐乐  阅读(1290)  评论(0编辑  收藏  举报