onbeforeunload
не работает таким образом.Соответствующая функция должна возвращать строку, которая, в свою очередь, должна отображаться в диалоговом окне onbeforeunload
по умолчанию.
function confirmExit() {
return "This message will appear in the dialog.";
}
Но вы ничего не возвращаете и не берете это в свои руки с confirm()
.Если функция ничего не возвращает, диалоговое окно onbeforeunload
вообще не будет отображаться.
Чтобы вызвать реальный выход из системы, вы должны использовать onunload
событие.Вот переписывание:
window.onbeforeunload = confirmExit;
window.onunload = logout;
function confirmExit() {
return "Click OK to exit, Click CANCEL to stay.";
}
function logout() {
window.location = 'logout.php';
}
Однако вы зависите от веб-браузера, будет ли последний на самом деле попадать на сервер.Большинство, если не все веб-браузеры, не делают.Я бы предпочел создать несанкционированный запрос по этому URL, но вы также зависите от веб-браузера, будет ли он работать безупречно.