Учебник по Electron.js

Закрытие окна из программы

Закрыть окно из программы позволяет метод close() объекта окна. Эффект аналогичен нажатию пользователем кнопки Закрыть в заголовке окна. В листинге 2.1 мы как раз воспользовались этим методом, ведь заголовок окна отсутствует, а с ним отсутствует и кнопка Закрыть:

ipcMain.on('event-win-close', (e) => {
   if (win) win.close();
});

При попытке закрытия окна генерируются следующие события:

В некоторых случаях нужно предотвратить закрытие окна. Например, если пользователь не сохранил данные. Для этого внутри обработчика события close следует вызвать метод preventDefault() через объект события:

let n = 0;
win.on('close', (e) => {
   if (n < 2) {
      e.preventDefault(); // Предотвращаем закрытие окна
   }
   n++;
});

Внутри обработчика события beforeunload можно присвоить любое значение, отличное от undefined, свойству returnValue объекта события:

let x = 0;
window.onbeforeunload = function(e) {
   if (x < 1) e.returnValue = false; // Предотвращаем закрытие окна
   x++;
};

Если при создании окна опции closable было присвоено значение false, то кнопка Закрыть в заголовке окна будет недоступна. Управлять опцией после создания объекта окна позволяют методы setClosable(true | false) и isClosable().