SetTimeout + SetInterval ведут себя непоследовательно в In Innative Tab on ChromeJavascript

Форум по Javascript
Anonymous
SetTimeout + SetInterval ведут себя непоследовательно в In Innative Tab on Chrome

Сообщение Anonymous »

Я пытаюсь реализовать простое поведение, когда функция начинает работать неоднократно после задержки после того, как пользователь покинет вкладку браузера (то есть переключается на другую вкладку). Например: < /p>
Через 3 секунды вкладки неактивна, < /p>
Начало Toggling Tab SetInterval начинает переключаться, < /p>
Затем он непредсказуемо сдерживается - иногда после нескольких итераций (например, 18 переключателей), затем возобновляется позже или полностью останавливается на некоторое время. < /p>

Код: Выделить всё

window.addEventListener("blur", () => {
const delayBeforeStart = 10000;
const blinkInterval = 2000;

const originalTitle = document.title;
const alternateTitle = "Come back!";

let intervalId = null;

const timeoutId = setTimeout(() => {
if (document.hidden) {
intervalId = setInterval(() => {
document.title = document.title === originalTitle ? alternateTitle : originalTitle;
}, blinkInterval);
}
}, delayBeforeStart);

window.addEventListener("focus", () => {
clearTimeout(timeoutId);
if (intervalId) {
clearInterval(intervalId);
intervalId = null;
document.title = originalTitle;
}
});
});

работает гладко в Firefox.
В Chrome интервал часто запускается или даже останавливается полностью после некоторого времени, когда вкладка на заднем плане.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -on-chrome

Вернуться в «Javascript»