したがって、機能検出を使用してブラウザがをサポートしているかどうかを確認し、setTimeout
ベースの解決策に戻ってください(Paul Irish's famous postの行に何かがあります)。requestAnimationFrameがIE10で予期しないパラメータを渡しています
var NOW = Date.now || function() { return new Date.getTime(); };
var reqAnimFrame =
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
/* ... || */
function (callback) {
setTimeout(function() { callback(NOW()); }, 1000/60);
};
var previousTime = NOW();
function animStep(time) {
var timePassed = time - previousTime;
myCharacter.move(myCharacter.speed * timePassed);
previousTime = time;
reqAnimationFrame(animStep);
}
// start the animation
reqAnimationFrame(animStep);
これはInternet Explorer 10が登場するまではすばらしい結果でした。 IE10では、time
パラメータが渡されても、現在時刻と関係がないように見え、timePassed
の計算が不正です。
何が起こっているのですか?
非常に驚くべきことに、Internet Explorer *が仕様を逸脱したのは初めてのことです。びっくりしました! – jAndy
@jAndyこのケースでは、あなたが*それに続く*他のブラウザに先んじていると言えるでしょう。 – balpha
それはまさにポイントです.IEは何年もうんざりしていましたが、今は厳しく基準を守って善良な人にしようとしています。うまくいけば、将来的にはバランスが取れます。 – Sander