Советуют использовать window.onunload, window.onbeforeunload
window.onunload
Когда человек уходит со страницы или закрывает окно, на window срабатывает событие unload. В нём можно сделать что-то, не требующее ожидания, например, закрыть вспомогательные popup-окна, но отменить сам переход нельзя. Это позволяет другое событие – onbeforeunload, которое поэтому используется гораздо чаще.
window.onbeforeunload
Если посетитель инициировал переход на другую страницу или нажал «закрыть окно», то обработчик onbeforeunload может приостановить процесс и спросить подтверждение. Для этого ему нужно вернуть строку, которую браузеры покажут посетителю, спрашивая – нужно ли переходить.
Например:
window.onbeforeunload = function() {
return "Данные не сохранены. Точно перейти?";
};