Я хочу уведомить пользователя о закрытии окна браузера.Не успел отправить запрос на выгрузку окна
Я попробовал все из
$(window).bind("beforeunload", function() {
$.get("${contextPath}/notify?direction=logout");
});
и
$(window).unload(function() {
$.get("${contextPath}/notify?direction=logout");
});
и
$(window).unload(function() {
$.ajax({
url: "${contextPath}/notify?direction=logout"
});
});
но не работают хорошо, несмотря на то, что сказано в руководстве, что это, вероятно, должен.
В Firefox У меня нет уведомлений только о закрытии окна, но есть их на странице обновления. В Chrome у меня нет ни того, ни другого.
Я попытался проследить этот сценарий в Firebug или Chrome Developer Tools и обнаружил, что он начинает работать, если отслеживается! Поэтому я думаю, что это не работает нормально, потому что у него нет времени на отправку запроса до закрытия окна или навигации.
Это правда? Как выполнить мою задачу?
РЕШЕНИЕ
Это сработало:
$(window).bind("beforeunload",
function() {
$.ajax({
async: false,
url: 'notify'
});
}
);
Первая мысль: AJAX - неправильный инструмент для работы. Вы должны использовать SJAX (синхронно), AJAX по определению освобождает поток графического интерфейса, чтобы продолжить обработку [в этом случае выгрузить]. – Shad
Отметьте этот ответ: http://stackoverflow.com/a/9234785/252780 –