У меня 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
объектом, чтобы действительно увидеть , сколько времени прошло.