Paul Irish有一個名爲requestAnimationFrame for Smart Animating的帖子。現在,保羅是一個聰明人 - 我只是想了解這個想法的應用範圍。對於哪些瀏覽器使用Paul Irish的requestAnimationFrame墊片?
他說,做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墊片?你可以撕掉它,它仍然有效,它看起來像瀏覽器已經很長一段時間了。
恰好在剛纔鏈接的列表中。特別是對於IE9。 – SLaks
永遠不要使用現有的墊片。它只是延遲執行1000/60。 raf的唯一目的是避免過多的dom更新。更好地使用真正的raf polyfill來調度下一幀執行的回調。 –