現在、 mozRequestAnimationFrame や webkitRequestAnimationFrame などのメソッドがFirefoxやChromeに実装されています。
これは最近追加されたアニメーション処理向けのメソッドです。存在は知っていたのですがまだ、最近のFirefoxやChromeじゃないと使えないしなぁ。と自分はまだ様子見状態でした。
しかし、この前開催されたGoogle I/OのHTML5関連のスライドを見ていたらこの様な記述を見かけました。
window.requestAnimFrame = (function(){ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(/* function */ callback, /* DOMElement */ element){ window.setTimeout(callback, 1000 / 60); }; })();
Google I/O 2011 - Super Browser 2 Turbo HD Remix : Intro to HTML5 Game Development by Seth Ladd
http://io-2011-html5-games-hr.appspot.com/#32
あれっ?OperaもrequestAnimationFrame対応したの?と思いOperaでテストした所、まだ未対応。うーん、そうですよね。そんな話聞いて無いし……。
しかし、この記述ならもし、Operaがこれから対応した場合には自動的に使用される様になるし、未対応な現状でもsetTimeoutで処理が行われるので大きな問題無いですね。
ここは良いテクニック。これから自分も使って行こうと思います。
関連情報
詳しい説明がされてます。お勧め!!
requestAnimationFrame < よーしおまえらー、アニメーションにsetInterval使うなよー - くろまほうさいきょうでんせつ
http://d.hatena.ne.jp/calpo/20110523/p1
requestAnimationFrame - MDC Docs
https://developer.mozilla.org/en/DOM/window.mozRequestAnimationFrame