gpt4 book ai didi

electron - Electron -防止窗口关闭以进行渲染过程

转载 作者:行者123 更新时间:2023-12-03 12:32:41 25 4
gpt4 key购买 nike

我想防止 Electron 应用程序关闭,因此我可以在渲染过程结束之前触发一些代码(例如保存数据)。
由于e.PreventDefault()不适用于我(在渲染和主过程中),因此我不得不找到另一种方法。如果有人遇到与我相同的问题,我想分享一下。
您可以在下面找到我的答案:)

最佳答案

所以。从渲染过程开始。您可以使用window.onbeforeunload通过返回任何值(false,true或任何字符串)来防止窗口关闭。
这里只是创建了一个名为“ CanCloseWindow ”的 bool 值,该 bool 值将在窗口内返回false。在取消加载函数以防止我的窗口关闭之前,该 bool 值会返回。
Electron remote.getCurrentWindow()将返回当前的BrowserWindow对象。我可以用它来获取 .on('close')事件。
如果“ CanCloseWindow ”为假。在应用程序关闭之前,我将启动一个promise.allSettled与我要运行的所有任务。如果需要,我也可以启动同步任务。
一旦完成。我可以将 bool 值“ CanCloseWindow ”设置为true,然后让应用程序尝试使用 app.quit()再次关闭其窗口。
所有这些代码将再次执行,但是由于 CanCloseWindow 为true,因此我的任务将无法运行,并且我的应用程序将关闭。

var CanCloseWindow = false; 
window.onbeforeunload = function(e){
if(CanCloseWindow === false) {return false}
}

remote.getCurrentWindow().on('close', ()=>{
if(CanCloseWindow === false){
var editorconfig = EditorConfig.getInstance();
Promise.allSettled([
editorconfig.set('.BrowserWindow.x', CurrentWindow.getPosition()[0]),
editorconfig.set('.BrowserWindow.y', CurrentWindow.getPosition()[1]),
editorconfig.set('.BrowserWindow.width', CurrentWindow.getSize()[0]),
editorconfig.set('.BrowserWindow.height', CurrentWindow.getSize()[1]),
editorconfig.set('.BrowserWindow.fullscreen', CurrentWindow.isFullScreen())
])
.then((results)=>{
CanCloseWindow = true;
remote.app.quit();
})
}
})

关于electron - Electron -防止窗口关闭以进行渲染过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64430138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com