Paul Irish有一个名为requestAnimationFrame for Smart Animating的帖子。现在保罗是一个聪明人 - 我只是想了解这个想法的应用范围。
他说要做HTML5动画 - 你应该像这样使用requestAnimationFrame垫片:
// shim layer with setTimeout fallback
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
// usage:
// instead of setInterval(render, 16) ....
(function animloop(){
requestAnimFrame(animloop);
render();
})();
// place the rAF *before* the render() to assure as close to
// 60fps with the setTimeout fallback.
这是可以理解的。 We can apply this in a JSFiddle like this结果非常好。
但if I rip out the shim layer function,然后在Chrome 31和Firefox 24中运行正常。
因此,如果我查看compatibility for the RequestAnimationFrame function - 看起来好像浏览器已经有很长时间了。
我的问题是 - 对于哪些浏览器我们使用Paul Irish的requestAnimationFrame shim?你可以将其删除并且它仍然有效,并且看起来浏览器已经使用了很长时间。
答案 0 :(得分:18)
你需要IE8,IE9,Android浏览器的polyfill,还有一些旧的东西,你必须做出判断。
这是目前对rAF的支持,感谢caniuse.com:
角落里带有黄色标记的任何东西都使用前缀,因此它需要垫片。任何红色都需要setTimeout后退。
但是,为了达到你的核心点......很快,是的,很快,polyfill将会更小。希望不久之后我们可以杀死它并直接使用rAF。
答案 1 :(得分:6)
如果您想支持旧浏览器,我担心填充/垫片是必要的。
正如您所指出的,它适用于最新的Firefox和Chrome,没有前缀。 Firefox还有new policy not to prefix任何未来的技术,所以这也许是一件好事,并且proposal也可以为Chrome做同样的事情。
但是如果您运行较旧的浏览器(以及令人惊讶的大量用户),则必须使用填充。
在这里,我们看到IE9在顶部,然后是IE8,10,然后是较旧的Chrome版本(尽管这包括去年整体解释Chrome部分以及IE9和IE10)。变更可能适用于地区,因此请测试您认为应用程序相关的地理区域。