Закрыть окно из программы позволяет метод close() объекта окна. Эффект аналогичен нажатию пользователем кнопки Закрыть в заголовке окна. В листинге 2.1 мы как раз воспользовались этим методом, ведь заголовок окна отсутствует, а с ним отсутствует и кнопка Закрыть:
ipcMain.on('event-win-close', (e) => {
if (win) win.close();
});При попытке закрытия окна генерируются следующие события:
close — возникает перед закрытием окна с помощью кнопки Закрыть в заголовке окна или при вызове метода close(). Генерируется перед событиями beforeunload и unload из DOM;closed — событие после закрытия окна.В некоторых случаях нужно предотвратить закрытие окна. Например, если пользователь не сохранил данные. Для этого внутри обработчика события 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().