From fe3203bb5bdc0049467214e7f0979a3487d5681b Mon Sep 17 00:00:00 2001 From: timmywil Date: Mon, 4 Apr 2011 19:25:12 -0400 Subject: [PATCH] Some adjustments and style edits on lrbabe's pull for requestAnimationFrame - Moved support.js check to effects.js. This is just an assignment to the function if it exists. Removed string concatenations. + Still need to do the checks on window, but after that, window is no longer needed. - Switched ternary to an if statmenet - assigned timerId to a number rather than the function. I did perf tests to check which is faster. --- src/effects.js | 20 ++++++++++++-------- src/support.js | 10 +--------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/effects.js b/src/effects.js index e5a10295..9835e959 100644 --- a/src/effects.js +++ b/src/effects.js @@ -11,7 +11,8 @@ var elemdisplay = {}, [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ], // opacity animations [ "opacity" ] - ]; + ], + requestAnimationFrame = window.webkitRequestAnimationFrame || window.mozRequestionAnimationFrame; jQuery.fn.extend({ show: function( speed, easing, callback ) { @@ -364,15 +365,18 @@ jQuery.fx.prototype = { if ( t() && jQuery.timers.push(t) && !timerId ) { // Use requestAnimationFrame instead of setInterval if available - ( timerId = jQuery.support.requestAnimationFrame ) ? - window[timerId](function raf() { - // timerId will be true as long as the animation hasn't been stopped - if (timerId) { - window[timerId](raf); + if ( requestAnimationFrame ) { + timerId = 1; + requestAnimationFrame(function raf() { + // When timerId gets set to null at any point, this stops + if ( timerId ) { + requestAnimationFrame( raf ); fx.tick(); } - }): - timerId = setInterval(fx.tick, fx.interval); + }); + } else { + timerId = setInterval( fx.tick, fx.interval ); + } } }, diff --git a/src/support.js b/src/support.js index 64a54b83..4c309562 100644 --- a/src/support.js +++ b/src/support.js @@ -13,8 +13,7 @@ a = div.getElementsByTagName("a")[0], select = document.createElement("select"), opt = select.appendChild( document.createElement("option") ), - input = div.getElementsByTagName("input")[0], - raf = "RequestAnimationFrame"; + input = div.getElementsByTagName("input")[0]; // Can't get basic test support if ( !all || !all.length || !a ) { @@ -59,13 +58,6 @@ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) optSelected: opt.selected, - // Verify requestAnimationFrame mechanism existence - // use the prefixed name as the value - requestAnimationFrame: - window['moz' + raf] ? 'moz' + raf : - window['webkit' + raf] ? 'webkit' + raf : - false, - // Will be defined later deleteExpando: true, optDisabled: false,