我有一个使用 React 的普通 Electron 应用程序。我想在关闭之前显示一个提示。 预期的行为是当我单击“X”按钮时,窗口必须保持打开状态并在关闭之前显示对话框,以便我可以选择是否确实要退出。 但相反,这就是发生的情况 Electron 窗口在显示对话框之前关闭。在我单击任何按钮之前,该对话框会自行关闭。 这是 main.dev.ts 中包含的代码
mainWindow.on('close',(e) => {
var choice = dialog.showMessageBox(mainWindow,
{
type: 'question',
buttons: ['Yes', 'No'],
title: 'Confirm',
message: 'Are you sure you want to quit?'
});
if(choice == 1){
e.preventDefault();
}});
我已经检查过 stackoverflow 上是否有一些有用的问题,但没有发现。 我们将不胜感激您的帮助。
最佳答案
如果显示确认提示,则需要调用 e.preventDefault();
无论哪种方式都可以保持窗口打开。
然后,如果他们单击"is",请单独关闭窗口。
但是您会遇到一个问题,一旦用户单击"is"后窗口关闭,它将再次触发 close
事件,从而导致无限循环。我已使用下面的 hasConfirmedClose
变量修复了此问题。
这是可行的:
var hasConfirmedClose = false;
mainWindow.on('close', (e) => {
if (!hasConfirmedClose) {
e.preventDefault(); // Prevent default no matter what.
var choice = dialog.showMessageBox(mainWindow, {
type: 'question',
buttons: ['Yes', 'No'],
title: 'Confirm',
message: 'Are you sure you want to quit?'
});
if (choice == 1) {
hasConfirmedClose = true;
mainWindow.close();
}
}
});
关于 Electron :BrowserWindow.on关闭提示不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69247666/