Я смог вызвать функцию обратного вызова минимум за 250 мс, используя звуковую метку и обработав событие ontimeupdate. Его вызывали 3-4 раза в секунду. Лучше, чем одна секунда отстает setTimeout

я есть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, если вкладка неактивна.

Я предполагаю, что это сделано специально для улучшения производительности, но есть ли способ отключить это поведение? Это на самом деле недостаток в моем сценарии.