电子: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();
        }
    }
});