Skip to content
Create a gist now

Instantly share code, notes, and snippets.

@geddski /rAF.js forked from paulirish/rAF.js

requestAnimationFrame polyfill
// requestAnimationFrame polyfill by Erik Möller
// fixes from Paul Irish and Tino Zijdel
(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]+'RequestCancelAnimationFrame'];
if (!window.requestAnimationFrame || !window.cancelAnimationFrame) //current Chrome (16) supports request but not cancel
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); },
lastTime = currTime + timeToCall;
return id;
if (!window.cancelAnimationFrame)
window.cancelAnimationFrame = function(id) {

line 16 fixes issue with Chrome 16 not supporting the cancelAnimationFrame


Whatchu talkin about.. Chrome 16 has webkitCancelRequestAnimationFrame

@paulirish and run webkitCancelRequestAnimationFrame(rid) in console.


What the junk, you're right. I swear I tested it and double checked my spelling. My bad. Deleting this gist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.