window.onbeforeunload обрабатывает нормально и отменяет опции
У меня есть функция window.onbeforeunload, которая генерирует сообщение по умолчанию "Вы уверены, что хотите отойти от этой страницы....". Если мы нажимаем "ОК", мы перенаправляемся на новую ссылку, а если мы нажимаем "Отмена", мы перенаправляемся обратно на ту же страницу.
Я хочу сохранить некоторые данные со страницы, когда мы нажимаем "ОК" и удаляемся со страницы. Как мы можем узнать, были ли нажаты кнопки "ОК" или "Отмена", затем выполнить вызов события и продолжить с опцией "ОК"/"Отмена".
3 ответа
Возможный подход может заключаться в onunload
событие, и если этот обработчик вызывается, вы знаете, что пользователь выбрал OK
,
В onbeforeunload
установите обратный вызов тайм-аута, который вызывается некоторое время спустя (например, 1 секунда), и, если он вызывается, пользователь мог выбрать Cancel
,
Не уверен, насколько это безопасно в отношении условий гонки.
function leavePage() {
//do your thing like saving the data in the session
return "Some data entered may be lost."; //a text needs to be returned
}
window.onbeforeunload = leavePage;
Вы используете диалог подтверждения JavaScript?
if(confirm("Are you sure you want to navigate away from this page....")) {
// OK was pressed
} else {
// Cancel was pressed
}