Есть ли способ получить результат в диалоговом окне подтверждения window.onbeforeunload, как показано ниже, из переполнения стека (это происходит, когда вы покидаете страницу «Задать вопрос», не оставив вопрос)?
Вот как это выглядит в Chrome, я думаю, что это немного отличается в других браузерах, но у вас всегда есть некоторая форма кнопок да / нет.
Предположительно, если они все еще находятся на странице-нарушителе после того, как событие было инициировано, они решили остаться, и вы, вероятно, могли бы выяснить это, наблюдая за последовательностью js. Однако Я хотел бы знать, как определить, нажали ли они «Покинуть эту страницу» ?
Я реализовал это, как показано ниже:
// concept taken from SO implementation
function setConfirmUnload(showMessage, message) {
window.onbeforeunload = showMessage ? (message ? message : "this is a default message") : null;
}
// pseudo code
listen to changes on inputs
if any inputs fire a change event
call setConfirmUnload(true, 'My warning message')
note Я использую jQuery на своем сайте.
По сути, я пытаюсь реализовать Gmail-подобную реализацию, в которой, если пользователь оставляет страницу с формой, в которую он внес изменения, не сохраняя, он нагревается с помощью аналогичного диалога. Если они решат отменить изменения и покинуть страницу, мне нужно очистить некоторые временные записи из базы данных (я думаю, вызов AJAX или просто отправить форму с флагом delete
), а затем отправить их на их путь.
Мой вопрос также относится к:
jQuery AJAX вызывает в обработчике onunload ПОСЛЕ ПОЛУЧЕНИЯ страницы при обновлении вручную. Как я гарантирую, что первая загрузка произойдет?