Byłem więc dobrym obywatelem sieciowym, używając funkcji wykrywania cech, aby sprawdzić, czy przeglądarka obsługuje requestAnimationFrame
i opiera się jedynie na rozwiązaniu opartym na setTimeout
(coś podobnego do linii Paul Irish's famous post).requestAnimationFrame przekazuje nieoczekiwane parametry w 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);
To działało świetnie wszędzie, dopóki nie pojawił się program Internet Explorer 10. W IE10 przekazany parametr time
nie wydaje się mieć nic wspólnego z bieżącym czasem, pomijając obliczenia timePassed
.
Co się dzieje?
dość zaskakująco ... to byłby pierwszy raz, gdy * Internet Explorer * odbiega od specyfikacji. Jestem zszokowany! – jAndy
@jAndy Również w tym przypadku można powiedzieć, że są przed innymi przeglądarkami w następujący * * go. – balpha
I to jest właśnie punkt: IE pomieszane przez lata, a teraz próbują być dobrym facetem następujące standardy mocno. Mam nadzieję, że uda się to zrównoważyć w przyszłości. – Sander