У мене setInterval
працює шматочок коду 30 разів на секунду. Це чудово працює, проте коли я вибираю іншу вкладку (так що вкладка з моїм кодом стає неактивною), setInterval
деяка причина встановлюється в режим очікування.
Я зробив цей спрощений тестовий випадок ( http://jsfiddle.net/7f6DX/3/ ):
var $div = $('div');
var a = 0;
setInterval(function() {
a++;
$div.css("left", a)
}, 1000 / 30);
Якщо ви запустите цей код, а потім перейдете на іншу вкладку, зачекайте кілька секунд і поверніться назад, анімація продовжується в той момент, який був під час переходу на іншу вкладку. Тому анімація не працює 30 разів на секунду, якщо вкладка неактивна. Це можна підтвердити, підраховуючи кількість разів, коли setInterval
функція викликається щосекунди - це буде не 30, а лише 1 або 2, якщо вкладка неактивна.
Я здогадуюсь, що це робиться дизайном, щоб покращити продуктивність, але чи є спосіб відключити цю поведінку? Це фактично недолік у моєму сценарії.
Date
. Так що, коли інтервали не спрацьовують швидко (з тих чи інших причин), анімація стає дедалі більше, а не повільніше.
Date
об’єктом, щоб дійсно побачити, який час минув.