如何在非支持的浏览器上正确模拟requestAnimationFrame?

时间:2013-06-15 18:37:06

标签: javascript css html5 cross-browser

Safari 5.1及更早版本的浏览器不提供requestAnimationFrame功能,这对于使用基于JavaScript的动态定位的某些应用程序至关重要。 setInterval不是一个令人满意的替代品,因为它缺少更新和渲染之间的同步。如何在这些浏览器上正确模拟requestAnimationFrame

1 个答案:

答案 0 :(得分:1)

我认为你没有其他选择而不是计时器。如果您想避免setInterval之前可能丢帧,请使用setTimeout,并每次从回调开始新的超时:

function renderFrame() {
    // do stuff
    setTimeout(renderFrame, 1000/30);
}
renderFrame();

实际上,我的第一句话并不准确。 Google搜索向我展示了其他选项,例如a timestamp-based solutionanother one that uses both timestamps and setTimeout