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