resourceloader: Remove AJAX call from addScript() in mediawiki.js
authorAaron Schulz <aschulz@wikimedia.org>
Tue, 8 May 2018 21:58:01 +0000 (14:58 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 9 May 2018 02:38:37 +0000 (02:38 +0000)
Bug: T192623
Change-Id: If38376cb987c273b9991129df8f9a2ae04cfa4ed

resources/src/mediawiki/mediawiki.js

index 598293a..b1e1da3 100644 (file)
                         * @param {Function} [callback] Callback to run after request resolution
                         */
                        function addScript( src, callback ) {
-                               var promise = $.ajax( {
-                                       url: src,
-                                       dataType: 'script',
-                                       // Force jQuery behaviour to be for crossDomain. Otherwise jQuery would use
-                                       // XHR for a same domain request instead of <script>, which changes the request
-                                       // headers (potentially missing a cache hit), and reduces caching in general
-                                       // since browsers cache XHR much less (if at all). And XHR means we retrieve
-                                       // text, so we'd need to $.globalEval, which then messes up line numbers.
-                                       crossDomain: true,
-                                       cache: true
-                               } );
-
-                               if ( callback ) {
-                                       promise.always( callback );
-                               }
+                               var script = document.createElement( 'script' );
+                               script.src = src;
+                               script.onload = script.onerror = function () {
+                                       if ( script.parentNode ) {
+                                               script.parentNode.removeChild( script );
+                                       }
+                                       script = null;
+                                       if ( callback ) {
+                                               callback();
+                                               callback = null;
+                                       }
+                               };
+                               document.head.appendChild( script );
                        }
 
                        /**