У меня есть простое слайд-шоу, которое я сделал на домашней странице клиента, используя 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, когда окно браузера не в фокусе?
Спасибо