私もその記事を読んだばかりで、自分で試してみたいと思っていました。私は、高解像度タイマーをサポートしていないブラウザーで rAF コールバックにラッパーを追加することに挑戦しました。次の行を追加して、Paul Irish のオリジナルのポリフィルを使用します。
var hasPerformance = !!(window.performance && window.performance.now);
// Add new wrapper for browsers that don't have performance
if (!hasPerformance) {
// Store reference to existing rAF and initial startTime
var rAF = window.requestAnimationFrame,
startTime = +new Date;
// Override window rAF to include wrapped callback
window.requestAnimationFrame = function (callback, element) {
// Wrap the given callback to pass in performance timestamp
var wrapped = function (timestamp) {
// Get performance-style timestamp
var performanceTimestamp = (timestamp < 1e12)
? timestamp
: timestamp - startTime;
return callback(performanceTimestamp);
};
// Call original rAF with wrapped callback
rAF(wrapped, element);
}
}
すべてを組み合わせた要点と、新しいコードを使用した更新された例を次に示します。
https://gist.github.com/4078614
http://jsfiddle.net/timhall/XQpzU/4351/
このアプローチは、コールバック関数に渡されるパラメーターを高解像度タイマー形式に正規化することを目的としています。既存のコードがそれを期待している場合、高解像度タイマーを古い形式に変換するために、正反対の同様のアプローチを使用できますが、それは回帰と見なされます。
現在取り組んでいるプロジェクトの 1 つで試してみて、問題や改善が見つかった場合は要点を更新します。