对于哪些浏览器我们使用Paul Irish的requestAnimationFrame垫片?

时间:2014-01-17 03:31:13

标签: javascript html5 requestanimationframe

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?你可以将其删除并且它仍然有效,并且看起来浏览器已经使用了很长时间。

2 个答案:

答案 0 :(得分:18)

你需要IE8,IE9,Android浏览器的polyfill,还有一些旧的东西,你必须做出判断。

这是目前对rAF的支持,感谢caniuse.com:

enter image description here

角落里带有黄色标记的任何东西都使用前缀,因此它需要垫片。任何红色都需要setTimeout后退。

但是,为了达到你的核心点......很快,是的,很快,polyfill将会更小。希望不久之后我们可以杀死它并直接使用rAF。

答案 1 :(得分:6)

如果您想支持旧浏览器,我担心填充/垫片是必要的。

正如您所指出的,它适用于最新的Firefox和Chrome,没有前缀。 Firefox还有new policy not to prefix任何未来的技术,所以这也许是一件好事,并且proposal也可以为Chrome做同样的事情。

但是如果您运行较旧的浏览器(以及令人惊讶的大量用户),则必须使用填充。

Graph

Source

在这里,我们看到IE9在顶部,然后是IE8,10,然后是较旧的Chrome版本(尽管这包括去年整体解释Chrome部分以及IE9和IE10)。变更可能适用于地区,因此请测试您认为应用程序相关的地理区域。