From 3772c10426254a72a2c835ef8a787da5315d52ff Mon Sep 17 00:00:00 2001 From: Trevor Parscal Date: Sat, 14 May 2011 13:14:34 +0000 Subject: [PATCH] Improves on r88053 - added code basically lifted from jQuery.getScript which ensures that onreadystatechange is handled properly - only executing the callback when the state is changed to the correct state, and only calling it one time. Thanks John Resig! --- resources/mediawiki/mediawiki.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/resources/mediawiki/mediawiki.js b/resources/mediawiki/mediawiki.js index 9fff95a5bd..f4f93f327d 100644 --- a/resources/mediawiki/mediawiki.js +++ b/resources/mediawiki/mediawiki.js @@ -933,7 +933,26 @@ window.mediaWiki = new ( function( $ ) { script.setAttribute( 'src', src ); script.setAttribute( 'type', 'text/javascript' ); if ( $.isFunction( callback ) ) { - script.onload = script.onreadystatechange = callback; + var done = false; + // Attach handlers for all browsers -- this is based on jQuery.getScript + script.onload = script.onreadystatechange = function() { + if ( + !done + && ( + !this.readyState + || this.readyState === "loaded" + || this.readyState === "complete" + ) + ) { + done = true; + callback(); + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; + if ( script.parentNode ) { + script.parentNode.removeChild( script ); + } + } + }; } document.body.appendChild( script ); } else { -- 2.20.1