animationFramePolyFill.js 921 B

12345678910111213141516171819202122232425
  1. (function () {
  2. var lastTime = 0;
  3. var vendors = ['ms', 'moz', 'webkit', 'o'];
  4. for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { // eslint-disable-line no-plusplus
  5. window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
  6. window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
  7. }
  8. if (!window.requestAnimationFrame) {
  9. window.requestAnimationFrame = function (callback) {
  10. var currTime = new Date().getTime();
  11. var timeToCall = Math.max(0, 16 - (currTime - lastTime));
  12. var id = setTimeout(function () {
  13. callback(currTime + timeToCall);
  14. },
  15. timeToCall);
  16. lastTime = currTime + timeToCall;
  17. return id;
  18. };
  19. }
  20. if (!window.cancelAnimationFrame) {
  21. window.cancelAnimationFrame = function (id) {
  22. clearTimeout(id);
  23. };
  24. }
  25. }());