我想防止我的电子应用程序关闭,因此我可以在渲染过程结束之前触发一些代码(例如保存数据)。
由于e.PreventDefault()不适用于我(在渲染和主过程中),因此我不得不找到另一种方法。如果有人遇到与我相同的问题,我想分享一下。
您可以在下面找到我的答案:)
答案 0 :(得分:1)
所以。从渲染过程开始。您可以使用Inc
通过返回任何值(false,true或任何字符串)来防止窗口关闭。
这里刚刚创建了一个名为“ CanCloseWindow ”的布尔值,该布尔值将在 window.onbeforeunload 函数内部返回false,以防止窗口关闭。
电子 remote.getCurrentWindow() 将返回当前的BrowserWindow对象。我可以用它来获取 .on('close')事件。
如果“ CanCloseWindow ”为假。在应用程序关闭之前,我将启动一个promise.allSettled与我要运行的所有任务。如果需要,我也可以启动同步任务。
完成后。我可以将布尔值“ CanCloseWindow ”设置为true,然后要求应用程序尝试使用 app.quit()
再次关闭其窗口所有这些代码将再次执行,但是由于 CanCloseWindow 为true,所以我的任务将无法运行,并且我的应用程序将关闭。
window.onbeforeunload