У меня есть простое слайд-шоу, которое я сделал на главной странице клиента, используя setInterval для временного вращения.
Чтобы предотвратить зависание браузеров setInterval, когда страница не находится в фокусе (просматривается другая вкладка или другая программа), я использую:
function onBlur() {
clearInterval(play);
};
function onFocus() {
mySlideRotateFunction();
};
if (/*@[email protected]*/false) {
document.onfocusin = onFocus;
document.onfocusout = onBlur;
} else {
window.onfocus = onFocus;
window.onblur = onBlur;
}
Где mySlideRotateFunction устанавливает setInterval и запускает некоторый jQuery. В то время как это работает в большинстве случаев, я нахожу, что иногда случается, что onBlur не запускается, и когда я возвращаюсь на страницу, тайминги "застроены", и вращения сходят с ума.
Я не могу определить причину, почему это происходит иногда, а не на других.
Мой вопрос: есть ли проблемы с моим кодом, и есть ли у кого-нибудь лучшее предложение для "паузы" setInterval, когда окно браузера не в фокусе?
Спасибо