Приостановка 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, когда окно браузера не в фокусе?
Спасибо