Насколько я знаю, нет никакого способа исправить это, кроме как сделать ваш код менее ресурсоемким.
Хром, кажется, самый быстрый браузер, но, как правило, FF не отстает, но IE все еще медленный. В зависимости от методов рендеринга, canvas, svg или webGL, он также очень зависит от вашего локального оборудования, поскольку он использует клиентский интерфейс для большинства вещей, а для сложных рендерингов webGL необходим мощный графический процессор для достижения хороших кадров.
Есть способы измерения частоты кадров на лету и соответственно изменить анимацию.
Вот очень простой пример, который измеряет частоту кадров.
function step(timestamp) {
var time2 = new Date;
var fps = 1000/(time2 - time);
time = time2;
\t
document.getElementById('test').innerHTML = fps;
window.requestAnimationFrame(step);
}
var time = new Date(), i = 0;
window.requestAnimationFrame(step);
<div id="test"></div>
Это просто мгновенная мера, которая не так уж точным, то вы, вероятно, хотите что-то, что меры, в течение некоторого времени, чтобы получить более правильную частоту кадров для используемого браузера.
Также обратите внимание на аргумент timestamp
, который в requestAnimationFrame
представляет собой временную метку высокого разрешения с минимальной точностью в 1 миллисекунду, которая также может использоваться для определения скорости анимации и любого задержек в браузере.
Способ решить этот вопрос - сделать любой код, который вы используете, от быстрого выполнения обратного вызова. Как это сделать нельзя сказать, не видя кода ... –