Приостановка setInterval, когда страница / браузер не в фокусе

У меня есть простое слайд-шоу, которое я сделал на домашней странице клиента, используя setInterval для измерения времени поворота.

Чтобы браузеры не завалили setInterval, когда страница не в фокусе (просматривается другая вкладка или другая программа), я использую:

function onBlur() {
            clearInterval(play);
        };

        function onFocus() {

            mySlideRotateFunction();

        };

        if (/*@cc_on!@*/false) { 
            document.onfocusin = onFocus;
            document.onfocusout = onBlur;
        } else {
            window.onfocus = onFocus;
            window.onblur = onBlur;
        }

Где mySlideRotateFunction устанавливает setInterval и запускает jQuery. Хотя это работает в большинстве случаев время от времени мне кажется, что onBlur не запускался, и когда я возвращаюсь на страницу, тайминги «нарастают», и ротации сходят с ума.

Я не могу точно определить причина того, почему это происходит в некоторых случаях, а не в других.

Мой вопрос - есть ли проблема с моим кодом, и есть ли у кого-нибудь лучшее предложение для «приостановки» setInterval, когда окно браузера не в фокусе?

​​Спасибо

21
задан Michael Watson 20 September 2011 в 10:14
поделиться