- 我正在开发一款写作应用程序。用户可以打开应用程序,编写一些文字,保存他们的工作等。
- 我试图让点击“关闭窗口”按钮时提示用户(a)保存他们的工作(如果必要)或(b)直接退出。
- 我尝试使用
window.beforeunload
来实现这一点,但是发现我陷入了一个循环中,尝试“退出”会导致同样的提示无限出现。
以下是一些代码:
windowCloseCheck() {
window.onbeforeunload = function(e) {
e.returnValue = false;
// window.alert('try to close me');
if(file.isUnsaved() || file.hasChanged()) {
// prompt - save or just quit?
file.fileWarning('You have unsaveeed work.', 'Save', 'Quit', function(){
// OPTION A - save
file.save();
}, function() {
// OPTION B: Quit.
ipcRenderer.send('quitter')
})
}
else {
// file is saved and no new work has been done:
ipcRenderer.send('quitter')
}
windowCloseCheck
在应用程序设置时被调用,启动一个关闭窗口的事件监听器。我的条件是检查文件是否未保存或已经与原始文件不同。
fileWarning
是一个函数,只是封装了electron对话框,使得弹出一个带有两个选择和各自函数的选项框。
如果我漏掉了必要的信息,其余代码可以在这里找到。如果我表述不够清晰,我很乐意进行澄清。
dialog.showMessageBox
是一个异步方法,在 Electron 7 中,建议的解决方案似乎已经不再适用了。只需将调用替换为dialog.showMessageBoxSync
即可修复该问题。 - Sergio Mazzoleni