requestAnimationFrame Polyfill
requestAnimationFrame
allows the browser to optimize animation performance. It is also battery friendly so you won't upset mobile users.
If requestAnimationFrame
is not available (with or without prefix), setTimeout
is used to polyfill it.
(function() {
var lastTime = 0;
var vendors = ['ms', 'moz', 'webkit', 'o'];
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
|| window[vendors[x]+'CancelRequestAnimationFrame'];
}
if (!window.requestAnimationFrame)
window.requestAnimationFrame = function(callback, element) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function() { callback(currTime + timeToCall); },
timeToCall);
lastTime = currTime + timeToCall;
return id;
};
if (!window.cancelAnimationFrame)
window.cancelAnimationFrame = function(id) {
clearTimeout(id);
};
}());
Credits:
Polyfill by Erik Möller, fixes from Paul Irish and Tino Zijdel.
https://gist.github.com/1579671
Written by Francisc Romano
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Requestanimationframe
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#