define( [
"../core", "../var/document", "../ajax"
], function( jQuery, document ) {
“use strict”;
// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) jQuery.ajaxPrefilter( function( s ) {
if ( s.crossDomain ) { s.contents.script = false; }
} );
// Install script dataType jQuery.ajaxSetup( {
accepts: { script: "text/javascript, application/javascript, " + "application/ecmascript, application/x-ecmascript" }, contents: { script: /\b(?:java|ecma)script\b/ }, 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 or forced-by-attrs requests if ( s.crossDomain || s.scriptAttrs ) { var script, callback; return { send: function( _, complete ) { script = jQuery( "<script>" ) .attr( s.scriptAttrs || {} ) .prop( { 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 ); } } ); // Use native DOM manipulation to avoid our domManip AJAX trickery document.head.appendChild( script[ 0 ] ); }, abort: function() { if ( callback ) { callback(); } } }; }
} );
} );