| define([ |
| "../core", |
| "../ajax" |
| ], function( jQuery ) { |
| |
| // Install script dataType |
| jQuery.ajaxSetup({ |
| accepts: { |
| script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" |
| }, |
| contents: { |
| script: /(?:java|ecma)script/ |
| }, |
| converters: { |
| "text script": function( text ) { |
| jQuery.globalEval( text ); |
| return text; |
| } |
| } |
| }); |
| |
| // Handle cache's special case and crossDomain |
| jQuery.ajaxPrefilter( "script", function( s ) { |
| if ( s.cache === undefined ) { |
| s.cache = false; |
| } |
| if ( s.crossDomain ) { |
| s.type = "GET"; |
| } |
| }); |
| |
| // Bind script tag hack transport |
| jQuery.ajaxTransport( "script", function( s ) { |
| // This transport only deals with cross domain requests |
| if ( s.crossDomain ) { |
| var script, callback; |
| return { |
| send: function( _, complete ) { |
| script = jQuery("<script>").prop({ |
| async: true, |
| charset: s.scriptCharset, |
| src: s.url |
| }).on( |
| "load error", |
| callback = function( evt ) { |
| script.remove(); |
| callback = null; |
| if ( evt ) { |
| complete( evt.type === "error" ? 404 : 200, evt.type ); |
| } |
| } |
| ); |
| document.head.appendChild( script[ 0 ] ); |
| }, |
| abort: function() { |
| if ( callback ) { |
| callback(); |
| } |
| } |
| }; |
| } |
| }); |
| |
| }); |