jQuery ajaxStart, ajaxStop Неудобное поведение - PullRequest
2 голосов
/ 13 июня 2011

Я сделал это, чтобы проиллюстрировать мою проблему: http://jsfiddle.net/michaelhart/mUMHZ/

(протестировано только в Chrome.)

В заключение: я не хочу, чтобы индикатор активности ajax сходил с умакогда пользователи уходят и возвращаются.

Я пробовал

$("#notification").clearQueue();
$("#notification").hide();

$("#notification").clearQueue();
$("#notification").show();

до

$('#notification').fadeOut();

, но это только приводит к тому, что индикатор перестает функционировать полностью после выхода из вкладки.

Я не уверен, является ли это ошибкой в ​​том, как Google Chrome обрабатывает неактивные вкладки, или в том, как jQuery работает, когда Chrome переводит его в «спящий режим».

Есть идеи?1018 *

1 Ответ

1 голос
/ 13 июня 2011

Ошибка отмечена в трекере ошибок jQuery. Предлагаемое исправление состоит в том, чтобы вместо использования setInterval вслепую использовать функцию обратного вызова анимации для запуска перезапуска с помощью setTimeout.

* 1005 Е.Г. *

$(document).ready(function() {
    fetchAjax();
});

function fetchAjax() {
        var randomnumber=Math.floor(Math.random()*10001);
        $('#number').html(randomnumber);
        $.ajax({
            type: 'POST',
            url: '/echo/html/',
            data: {
              'html': randomnumber
            },
            dataType: 'text/html'
        });
}

$(document).ajaxStart(function(){
    $('#notification').fadeIn();
}).ajaxStop(function(){
    $('#notification').fadeOut(function(){
      setTimeout(function(){ fetchAjax(); }, 5*1000);
    });
});
...