Electron.js предотвращает закрытие окон условно - PullRequest
0 голосов
/ 27 июня 2018

Я хочу спросить пользователя, действительно ли он хочет закрыть электронное приложение.

Соответственно до документов - я пробовал:

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

Но мое приложение по-прежнему закрывается независимо от того, какой пользователь выберет. Как предотвратить закрытие приложения Electron условно?

1 Ответ

0 голосов
/ 27 июня 2018

Я думаю, у меня есть ответ. Это не должно вызываться в процессе визуализации. Вместо этого мы должны использовать mainWindow в главном процессе для такой операции и метод 'close' жизненного цикла, который будет вызываться непосредственно перед закрытием.

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 вернет ответ из массива кнопок, поэтому в качестве подтверждения будет «Да», а для других параметров мы можем предотвратить действия.

ПРИМЕЧАНИЕ: я вставил this. из моего кода, но, очевидно, mainWindow - это ваш BrowserWindow экземпляр, а this.dialog - это electron.dialog, импортированный из import electron from 'electron';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...