From d8336d3e84c42e61b0d978fc8871273dabb22885 Mon Sep 17 00:00:00 2001 From: Krinkle Date: Sun, 24 Jul 2011 20:38:49 +0000 Subject: [PATCH] More mediawiki.js cleanup (addScript AJAX) - Update and merge in jQuery fixes: -- Dereference script (added) -- Order of actions -- Regex instead of two string comparisons -- Unit tests still pass :) Follows up: r92933, 93012 --- resources/mediawiki/mediawiki.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/resources/mediawiki/mediawiki.js b/resources/mediawiki/mediawiki.js index fd3f03e084..4bb14a3f5b 100644 --- a/resources/mediawiki/mediawiki.js +++ b/resources/mediawiki/mediawiki.js @@ -685,23 +685,30 @@ window.mw = window.mediaWiki = new ( function( $ ) { script.setAttribute( 'src', src ); script.setAttribute( 'type', 'text/javascript' ); if ( $.isFunction( callback ) ) { - // Attach handlers for all browsers -- this is based on jQuery.getScript + // Attach handlers for all browsers -- this is based on jQuery.ajax script.onload = script.onreadystatechange = function() { + if ( !done && ( - !this.readyState - || this.readyState === 'loaded' - || this.readyState === 'complete' + !script.readyState + || /loaded|complete/.test( script.readyState ) ) ) { + done = true; - callback(); + // Handle memory leak in IE script.onload = script.onreadystatechange = null; + + callback(); + if ( script.parentNode ) { script.parentNode.removeChild( script ); } + + // Dereference the script + script = undefined; } }; } -- 2.20.1