Electron.js防止有条件关闭窗口

时间:2018-06-27 11:03:12

标签: javascript electron

我想问用户是否真的要关闭电子应用程序。

因此to docs-我已经尝试过:

window.onbeforeunload = (e) => {
  const answer = confirm('Do you want to close the application?');
  e.returnValue = answer;
  if (answer) { window.close(); }
};

但是无论用户选择什么,我的应用程序仍然关闭。 如何防止有条件地关闭Electron应用程序?

1 个答案:

答案 0 :(得分:1)

我想,我有一个答案。 不应在渲染器过程中调用它。 相反,我们应该在主进程中使用mainWindow进行此类操作,并使用“关闭”生命周期方法,该方法将在关闭前立即调用。

this.mainWindow.on('close', (e) => {
  const choice = this.dialog.showMessageBox(
    this.mainWindow,
    {
      type: 'question',
      buttons: ['Yes', 'No, hang on', 'third option'],
      title: 'Confirm your actions',
      message: 'Do you really want to close the application?'
    }
  );
  console.log('CHOICE: ', choice);
  if (choice > 0) e.preventDefault();
});

choice const将从buttons数组返回答案,因此“是”将被确认,对于其他选项,我们可以阻止操作。

注意:我从代码中粘贴了this.,但是显然mainWindow是您的BrowserWindow实例,this.dialogelectron.dialog import electron from 'electron';