Я один обработчик beforeunload, который вызывается, когда пользователь фактически переходит от страницы:Пропустить beforeunload обработчика, если пользователь остается на страницу из диалогового окна в второй обработчик
$(window).on("beforeunload", function() {
cleanup();
});
Другая часть моего приложения может однако добавить еще один обработчик beforeunload, который запрашивает у пользователя, если он действительно хочет уйти из-за постоянной работы:
$(window).on("beforeunload", function() {
return "Do you really want to leave";
});
Как я могу гарантировать, что второй обработчик всегда будет вызываться первым и что первый обработчик не будет вызывается в случае, если пользователь решает tay на странице?
Я уже пытался использовать событие unload
. Но это не сработает, так как он не выполнит мою функцию очистки и бэкэнд-вызов в этой функции надежно.
Попробуйте следующее: http://stackoverflow.com/questions/17759703/is-there-any-way-to-detect-if-user-pressed-stay-on-page-or-leave -page-in-bef –
@ IsmaelMiguel Спасибо, но ни один из ответов в этом вопросе не работает в моем случае. Я не могу использовать таймаут, так как я должен сделать это, когда пользователь уйдет, а не когда он останется. Кроме того, я не могу использовать 'unload', так как он должен делать бэкэнд-вызов в моей функции очистки и использовать' unload', этот вызов иногда не будет выполнен. – basilikum
Вы правы. Эти требования на самом деле разные. Не заметил. Мне очень жаль. –