...
|
...
|
@@ -160,42 +160,48 @@ $header.on('touchstart', 'a', function() { |
|
|
$(this).removeClass('highlight');
|
|
|
});
|
|
|
|
|
|
var lastTime = 0;
|
|
|
var prefixes = 'webkit moz ms o'.split(' ');
|
|
|
(function() {
|
|
|
var lastTime = 0,
|
|
|
prefixes = 'webkit moz ms o'.split(' '),
|
|
|
requestAnimationFrame = window.requestAnimationFrame,
|
|
|
cancelAnimationFrame = window.cancelAnimationFrame,
|
|
|
prefix,
|
|
|
i;
|
|
|
|
|
|
//通过遍历各浏览器前缀,来得到requestAnimationFrame和cancelAnimationFrame在当前浏览器的实现形式
|
|
|
for (i = 0; i < prefixes.length; i++) {
|
|
|
if (requestAnimationFrame && cancelAnimationFrame) {
|
|
|
break;
|
|
|
}
|
|
|
prefix = prefixes[i];
|
|
|
requestAnimationFrame = requestAnimationFrame || window[prefix + 'RequestAnimationFrame'];
|
|
|
cancelAnimationFrame = cancelAnimationFrame || window[prefix + 'CancelAnimationFrame'] ||
|
|
|
window[prefix + 'CancelRequestAnimationFrame'];
|
|
|
}
|
|
|
|
|
|
var requestAnimationFrame = window.requestAnimationFrame;
|
|
|
var cancelAnimationFrame = window.cancelAnimationFrame;
|
|
|
//如果当前浏览器不支持requestAnimationFrame和cancelAnimationFrame,则会退到setTimeout
|
|
|
if (!requestAnimationFrame || !cancelAnimationFrame) {
|
|
|
requestAnimationFrame = function(callback, element) {
|
|
|
var currTime = new Date().getTime();
|
|
|
|
|
|
var prefix;
|
|
|
//为了使setTimteout的尽可能的接近每秒60帧的效果
|
|
|
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
|
|
|
var id = window.setTimeout(function() {
|
|
|
callback(currTime + timeToCall);
|
|
|
}, timeToCall);
|
|
|
|
|
|
//通过遍历各浏览器前缀,来得到requestAnimationFrame和cancelAnimationFrame在当前浏览器的实现形式
|
|
|
for( var i = 0; i < prefixes.length; i++ ) {
|
|
|
if ( requestAnimationFrame && cancelAnimationFrame ) {
|
|
|
break;
|
|
|
lastTime = currTime + timeToCall;
|
|
|
return id;
|
|
|
};
|
|
|
|
|
|
cancelAnimationFrame = function(id) {
|
|
|
window.clearTimeout(id);
|
|
|
};
|
|
|
}
|
|
|
prefix = prefixes[i];
|
|
|
requestAnimationFrame = requestAnimationFrame || window[ prefix + 'RequestAnimationFrame' ];
|
|
|
cancelAnimationFrame = cancelAnimationFrame || window[ prefix + 'CancelAnimationFrame' ] || window[ prefix + 'CancelRequestAnimationFrame' ];
|
|
|
}
|
|
|
|
|
|
//如果当前浏览器不支持requestAnimationFrame和cancelAnimationFrame,则会退到setTimeout
|
|
|
if ( !requestAnimationFrame || !cancelAnimationFrame ) {
|
|
|
requestAnimationFrame = function( callback, element ) {
|
|
|
var currTime = new Date().getTime();
|
|
|
|
|
|
//为了使setTimteout的尽可能的接近每秒60帧的效果
|
|
|
var timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) );
|
|
|
var id = window.setTimeout( function() {
|
|
|
callback( currTime + timeToCall );
|
|
|
}, timeToCall );
|
|
|
lastTime = currTime + timeToCall;
|
|
|
return id;
|
|
|
};
|
|
|
|
|
|
cancelAnimationFrame = function( id ) {
|
|
|
window.clearTimeout( id );
|
|
|
};
|
|
|
}
|
|
|
window.requestAnimationFrame = requestAnimationFrame;
|
|
|
window.cancelAnimationFrame = cancelAnimationFrame;
|
|
|
}());
|
|
|
|
|
|
//暴露公共接口
|
|
|
window.cookie = cookie;
|
...
|
...
|
@@ -209,7 +215,3 @@ window.getUid = getUid; |
|
|
window.getShoppingKey = getShoppingKey;
|
|
|
|
|
|
window.rePosFooter = rePosFooter; |
|
|
|
|
|
window.requestAnimationFrame = requestAnimationFrame;
|
|
|
|
|
|
window.cancelAnimationFrame = cancelAnimationFrame; |
...
|
...
|
|