У меня есть 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, если вкладка неактивна.
Я предполагаю, что это сделано по дизайну, чтобы повысить производительность, но есть ли способ отключить это поведение? Это на самом деле недостаток в моем сценарии.