2014-01-17 50 views
13

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墊片?你可以撕掉它,它仍然有效,它看起來像瀏覽器已經很長一段時間了。

+2

恰好在剛纔鏈接的列表中。特別是對於IE9。 – SLaks

+0

永遠不要使用現有的墊片。它只是延遲執行1000/60。 raf的唯一目的是避免過多的dom更新。更好地使用真正的raf polyfill來調度下一幀執行的回調。 –

回答

6

恐怕如果你想支持舊瀏覽器,填充/填充將是必要的。

正如您指出的那樣,它可以與最新的Firefox和Chrome一起使用,無需使用前綴。 Firefox也有一個new policy not to prefix任何未來的技術,所以這也許是一件好事,並有一個proposal爲Chrome做同樣的事情。

但是,如果您運行的瀏覽器較舊(並且出現了大量的用戶),則填充是必要的。

Graph

Source

這裏我們可以看到IE9在上面,然後IE8,10,然後舊的瀏覽器版本(雖然這包括去年全年這也解釋了Chrome的組成部分,也是IE9與IE10) 。變化可能適用於地區,以便測試您認爲您的應用程序相關的地理區域。

17

你需要爲IE8,IE9,Android瀏覽器和一些舊的東西,你必須作出判斷呼籲polyfill。

下面是英國皇家空軍感謝caniuse.com當前支持:

enter image description here

任何與在角落裏的黃色標誌使用前綴,所以它需要的墊片。任何紅色都需要setTimeout後備。但是,爲了快速掌握您的核心點,很快,polyfill將會小得多。從現在開始,我們希望不會太久,直接殺死它並使用rAF。

相關問題