...
|
...
|
@@ -160,6 +160,43 @@ $header.on('touchstart', 'a', function() { |
|
|
$(this).removeClass('highlight');
|
|
|
});
|
|
|
|
|
|
var lastTime = 0;
|
|
|
var prefixes = 'webkit moz ms o'.split(' ');
|
|
|
|
|
|
var requestAnimationFrame = window.requestAnimationFrame;
|
|
|
var cancelAnimationFrame = window.cancelAnimationFrame;
|
|
|
|
|
|
var prefix;
|
|
|
|
|
|
//通过遍历各浏览器前缀,来得到requestAnimationFrame和cancelAnimationFrame在当前浏览器的实现形式
|
|
|
for( var 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' ];
|
|
|
}
|
|
|
|
|
|
//如果当前浏览器不支持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.cookie = cookie;
|
|
|
|
...
|
...
|
@@ -172,3 +209,7 @@ window.getUid = getUid; |
|
|
window.getShoppingKey = getShoppingKey;
|
|
|
|
|
|
window.rePosFooter = rePosFooter;
|
|
|
|
|
|
window.requestAnimationFrame = requestAnimationFrame;
|
|
|
|
|
|
window.cancelAnimationFrame = cancelAnimationFrame; |
...
|
...
|
|