/** @scope window
Polyfill for cross-browser backwards compatible window.requestAnimationFrame support. Supports using `window.requestAnimationFrame` on browsers prior to the following: * Chrome 10 * Firefox 4.0 (Gecko 2.0) * Internet Explorer 10.0 * Opera 15 * Safari 6.0 Modified from Erik Möller: http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
*/ (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.cancelRequestAnimationFrame = window[vendors[x]+ 'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) { window.requestAnimationFrame = function(callback) { var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function() { callback(window.performance.now()); }, timeToCall); lastTime = currTime + timeToCall; return id; }; } if (!window.cancelAnimationFrame) { window.cancelAnimationFrame = function(id) { clearTimeout(id); }; }
}());