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
}
Другие вопросы по тегам