电子-防止渲染过程关闭窗口

时间:2020-10-19 15:09:45

标签: electron

我想防止我的电子应用程序关闭,因此我可以在渲染过程结束之前触发一些代码(例如保存数据)。

由于e.PreventDefault()不适用于我(在渲染和主过程中),因此我不得不找到另一种方法。如果有人遇到与我相同的问题,我想分享一下。

您可以在下面找到我的答案:)

1 个答案:

答案 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