animation-frame-polyfill
Version:
Polyfill requestAnimationFrame and cancelAnimationFrame
48 lines (37 loc) • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.cancelAnimationFrame = exports.requestAnimationFrame = void 0;
var prefix = ['webkit', 'moz', 'ms', 'o'];
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);
}();
exports.requestAnimationFrame = requestAnimationFrame;
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);
}();
exports.cancelAnimationFrame = cancelAnimationFrame;