Showing
1 changed file
with
30 additions
and
28 deletions
@@ -160,42 +160,48 @@ $header.on('touchstart', 'a', function() { | @@ -160,42 +160,48 @@ $header.on('touchstart', 'a', function() { | ||
160 | $(this).removeClass('highlight'); | 160 | $(this).removeClass('highlight'); |
161 | }); | 161 | }); |
162 | 162 | ||
163 | -var lastTime = 0; | ||
164 | -var prefixes = 'webkit moz ms o'.split(' '); | ||
165 | - | ||
166 | -var requestAnimationFrame = window.requestAnimationFrame; | ||
167 | -var cancelAnimationFrame = window.cancelAnimationFrame; | ||
168 | - | ||
169 | -var prefix; | ||
170 | - | ||
171 | -//通过遍历各浏览器前缀,来得到requestAnimationFrame和cancelAnimationFrame在当前浏览器的实现形式 | ||
172 | -for( var i = 0; i < prefixes.length; i++ ) { | ||
173 | - if ( requestAnimationFrame && cancelAnimationFrame ) { | 163 | +(function() { |
164 | + var lastTime = 0, | ||
165 | + prefixes = 'webkit moz ms o'.split(' '), | ||
166 | + requestAnimationFrame = window.requestAnimationFrame, | ||
167 | + cancelAnimationFrame = window.cancelAnimationFrame, | ||
168 | + prefix, | ||
169 | + i; | ||
170 | + | ||
171 | + //通过遍历各浏览器前缀,来得到requestAnimationFrame和cancelAnimationFrame在当前浏览器的实现形式 | ||
172 | + for (i = 0; i < prefixes.length; i++) { | ||
173 | + if (requestAnimationFrame && cancelAnimationFrame) { | ||
174 | break; | 174 | break; |
175 | } | 175 | } |
176 | prefix = prefixes[i]; | 176 | prefix = prefixes[i]; |
177 | - requestAnimationFrame = requestAnimationFrame || window[ prefix + 'RequestAnimationFrame' ]; | ||
178 | - cancelAnimationFrame = cancelAnimationFrame || window[ prefix + 'CancelAnimationFrame' ] || window[ prefix + 'CancelRequestAnimationFrame' ]; | ||
179 | -} | 177 | + requestAnimationFrame = requestAnimationFrame || window[prefix + 'RequestAnimationFrame']; |
178 | + cancelAnimationFrame = cancelAnimationFrame || window[prefix + 'CancelAnimationFrame'] || | ||
179 | + window[prefix + 'CancelRequestAnimationFrame']; | ||
180 | + } | ||
180 | 181 | ||
181 | -//如果当前浏览器不支持requestAnimationFrame和cancelAnimationFrame,则会退到setTimeout | ||
182 | -if ( !requestAnimationFrame || !cancelAnimationFrame ) { | ||
183 | - requestAnimationFrame = function( callback, element ) { | 182 | + //如果当前浏览器不支持requestAnimationFrame和cancelAnimationFrame,则会退到setTimeout |
183 | + if (!requestAnimationFrame || !cancelAnimationFrame) { | ||
184 | + requestAnimationFrame = function(callback, element) { | ||
184 | var currTime = new Date().getTime(); | 185 | var currTime = new Date().getTime(); |
185 | 186 | ||
186 | //为了使setTimteout的尽可能的接近每秒60帧的效果 | 187 | //为了使setTimteout的尽可能的接近每秒60帧的效果 |
187 | - var timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) ); | ||
188 | - var id = window.setTimeout( function() { | ||
189 | - callback( currTime + timeToCall ); | ||
190 | - }, timeToCall ); | 188 | + var timeToCall = Math.max(0, 16 - (currTime - lastTime)); |
189 | + var id = window.setTimeout(function() { | ||
190 | + callback(currTime + timeToCall); | ||
191 | + }, timeToCall); | ||
192 | + | ||
191 | lastTime = currTime + timeToCall; | 193 | lastTime = currTime + timeToCall; |
192 | return id; | 194 | return id; |
193 | }; | 195 | }; |
194 | 196 | ||
195 | - cancelAnimationFrame = function( id ) { | ||
196 | - window.clearTimeout( id ); | 197 | + cancelAnimationFrame = function(id) { |
198 | + window.clearTimeout(id); | ||
197 | }; | 199 | }; |
198 | -} | 200 | + } |
201 | + | ||
202 | + window.requestAnimationFrame = requestAnimationFrame; | ||
203 | + window.cancelAnimationFrame = cancelAnimationFrame; | ||
204 | +}()); | ||
199 | 205 | ||
200 | //暴露公共接口 | 206 | //暴露公共接口 |
201 | window.cookie = cookie; | 207 | window.cookie = cookie; |
@@ -209,7 +215,3 @@ window.getUid = getUid; | @@ -209,7 +215,3 @@ window.getUid = getUid; | ||
209 | window.getShoppingKey = getShoppingKey; | 215 | window.getShoppingKey = getShoppingKey; |
210 | 216 | ||
211 | window.rePosFooter = rePosFooter; | 217 | window.rePosFooter = rePosFooter; |
212 | - | ||
213 | -window.requestAnimationFrame = requestAnimationFrame; | ||
214 | - | ||
215 | -window.cancelAnimationFrame = cancelAnimationFrame; |
-
Please register or login to post a comment