В этом примере кодирования функция logout()
не будет выполнять все ее асинхронные вызовы и не будет ждать, пока они не будут завершены, - вместо этого страница выгружается раньше, потому что возврат beforeunload
Событие вызывает разгрузку страницы.Delay Return to Wait for Asynchronous Functions (событие beforeunload)
$(window).on('beforeunload', function(event) {
event.preventDefault();
logout();
return;
});
То, что я хочу попробовать, что функция возвращает событие после нескольких асинхронных вызовов в logout()
закончены.
EDIT: Моя цель NOT чтобы показать предупреждение! Я хочу только выполнить код до того, как страница будет выгружена. Функция выхода может содержать ajax-запросы и анимации jQuery с некоторой продолжительностью, которая должна быть завершена.
Я пробовал с обратными вызовами, но в конечном итоге, это не желаемый результат, поскольку он возвращается к обратному вызову, а не к функции события.
$(window).on('beforeunload', function(event) {
event.preventDefault();
logout(function(x) { return; });
});
Возможный дубликат [jquery beforeunload при закрытии страницы (не выходя)?] (Http://stackoverflow.com/questions/18783535/jquery-beforeunload-when-closing-not-leaving-the-page) –
@ E.Mourits Нет, вы прочитали мой вопрос? Это не имеет никакого отношения к различию между уходом и навигацией, но для выполнения кода до того, как страница будет выгружена/загружена новая страница. – ScientiaEtVeritas
Насколько я знаю, вы не можете запретить пользователю покидать страницу. Возможный дубликат - это ответ, который, как я думал, ближе всего к вашему желанию. –