requestAnimationFrame兼容代码
2016/12/28    标签: requestAnimationFrame   

requestAnimationFrame兼容代码

    (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]+'CancelRequestAnimationFrame'];
        };

        if(!window.requestAnimationFrame){
            window.requestAnimationFrame = function(callback, element){
                var currTime = new Date().getTime();
                var timeToCall = Math.max(0, 16.7 - (currTime - lastTime));
                var id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall);
                lastTime = currTime + timeToCall;
                return id;
            };
        };

        if (!window.cancelAnimationFrame){
            window.cancelAnimationFrame = function(id){
                clearTimeout(id);
            };
        };
    })()