2014-01-17 7 views
13

ポールアイルランドにはrequestAnimationFrame for Smart Animatingという投稿があります。今はポールがスマートな男です - そして、私はこのアイディアの適用範囲を理解しようとしています。Paul IrishのrequestAnimationFrame shimを使用しているブラウザはどれですか?

は彼が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

ちょうどあなたがリンクしたリストのもののために。特に、IE9の場合。 – SLaks

+0

シムを使用しないでください。 1000/60の実行を遅らせるだけです。 rafの唯一の目的は、過剰なDOM更新を避けることです。次のフレームの実行のためのコールバックをスケジュールするreal raf polyfillを使います。 –

答えて

6

旧式のブラウザをサポートしたい場合は、polyfill/shimが必要です。

あなたが指摘しているように、それは接頭辞なしで最新のFirefoxとChromeで動作します。 Firefoxにはnew policy not to prefixの将来の技術も含まれているので、これはおそらく良いことかもしれませんし、Chromeのためにも同じことを行うにはproposalがあります。

古いブラウザ(そして驚くほど大きなグループのユーザ do)を実行する場合は、ポリフィルが必要です。ここで

Graph

Source

我々は、IE8に続いてトップにIE9を参照してください10、次に古いクロームバージョン(これは、クロームパーツを説明し、また、IE10対IE9全体昨年を備えているが) 。バリエーションが地域に適用される可能性がありますので、アプリケーションが関連すると思われる地域をテストしてください。

17

IE8、IE9、Androidブラウザ用のポリフィルが必要で、判断の必要な古いものがたくさんあります。ここで

はcaniuse.comにRAFのおかげに対する現在のサポートです:それはシムを必要とするので、コーナーでイエローフラッグと

enter image description here

ものは、接頭辞を使用しています。赤色のものはsetTimeoutフォールバックが必要です。

しかし、あなたの中核ポイントに到達する...すぐに、はい、すぐに、polyfillははるかに小さくなります。そして今はあまりにも長すぎず、それを殺してrAFを直接使うことができればうれしいです。