2013-07-03 3 views
2

Я установил выгружающий прослушиватель, который устанавливает флаг, который обработчики ошибок из проверки запроса ajax.Нужно что-то раньше, чем выгрузка страницы?

jQuery(window).unload(function() { 
    unloadhappening = true; 
}); 

Однако запрос Ajax может быть прервана (когда пользователь переходит на другую страницу) и обработчик ошибок для запроса Ajax вызывается до события разгрузочного обжигают.

Мне было интересно, могу ли я получить событие раньше, чем выгрузить? Очевидно, я мог бы поместить слушателя на каждую ссылку, чтобы перейти со страницы, но искал более аккуратный способ, если таковой есть.

Благодаря

+0

Что именно вы пытаетесь достичь? – Horen

+0

@Horen не нужно, чтобы моя логика обработки ошибок срабатывала, если пользователь уходит со страницы. Поэтому я устанавливаю флаг. Моя логика обработки ошибок проверяет это, прежде чем что-либо делать. –

+0

@Horen: Он хочет, чтобы его обработчики ошибок ajax знали причину прерывания, которое они обнаруживают, чтобы они могли соответствующим образом реагировать. – Bergi

ответ

0

Вы могли бы, вероятно, использовать onbeforeunload или $(window).on('beforeunload'), но возвращает пустую строку из функции, чтобы предотвратить подсказку о навигации.

window.onbeforeunload = function(e) { 
    unloadhappening = true; 
    // maybe other logic 
    return ''; // or maybe return null 
} 

Я не тестировал решение, чтобы избежать всплывающего окна во всех браузерах, так что ваш пробег может варьироваться.

+0

Всплывающее окно происходит в FF –

+1

Попробуйте полностью удалить линию возврата. http://jsfiddle.net/Dqps3/ работает в Chrome и Firefox. –

Смежные вопросы