UNPKG

animation-frame-polyfill

Version:

Polyfill requestAnimationFrame and cancelAnimationFrame

36 lines (30 loc) 1.16 kB
var prefix = ['webkit', 'moz', 'ms', 'o']; export var requestAnimationFrame = function () { for (var i = 0, limit = prefix.length; i < limit && !window.requestAnimationFrame; ++i) { window.requestAnimationFrame = window[prefix[i] + 'RequestAnimationFrame']; } if (!window.requestAnimationFrame) { var lastTime = 0; window.requestAnimationFrame = function (callback) { var now = new Date().getTime(); var ttc = Math.max(0, 16 - now - lastTime); var timer = window.setTimeout(function () { return callback(now + ttc); }, ttc); lastTime = now + ttc; return timer; }; } return window.requestAnimationFrame.bind(window); }(); export var cancelAnimationFrame = function () { for (var i = 0, limit = prefix.length; i < limit && !window.cancelAnimationFrame; ++i) { window.cancelAnimationFrame = window[prefix[i] + 'CancelAnimationFrame'] || window[prefix[i] + 'CancelRequestAnimationFrame']; } if (!window.cancelAnimationFrame) { window.cancelAnimationFrame = function (timer) { window.clearTimeout(timer); }; } return window.cancelAnimationFrame.bind(window); }();