电子:BrowserWindow.on 关闭提示不起作用
electron: BrowserWindow.on close prompt not working
我有一个使用 React 的普通电子应用程序。我想在关闭之前显示提示。
预期的行为是当我单击“X”按钮时,window 必须保持打开状态并在关闭之前显示对话框,以便我可以选择是否真的要退出。
但是,这就是发生的事情
电子 window 在显示对话框之前关闭。在我单击任何按钮之前,对话框会自行关闭。
这是 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();
}});
我已经在 Whosebug 上检查过这里是否有一些有用的问题,但发现 none。
将不胜感激。
如果您显示确认提示,您需要以任何一种方式调用 e.preventDefault();
以保持 window 打开。
然后,如果他们单击“是”,则单独关闭 window。
然而,您会遇到一个问题,一旦 window 在用户单击“是”后关闭,它将再次触发 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();
}
}
});
我有一个使用 React 的普通电子应用程序。我想在关闭之前显示提示。
预期的行为是当我单击“X”按钮时,window 必须保持打开状态并在关闭之前显示对话框,以便我可以选择是否真的要退出。
但是,这就是发生的事情
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();
}});
我已经在 Whosebug 上检查过这里是否有一些有用的问题,但发现 none。 将不胜感激。
如果您显示确认提示,您需要以任何一种方式调用 e.preventDefault();
以保持 window 打开。
然后,如果他们单击“是”,则单独关闭 window。
然而,您会遇到一个问题,一旦 window 在用户单击“是”后关闭,它将再次触发 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();
}
}
});