mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Reduced script transport
This commit is contained in:
parent
359e3f5746
commit
c373a499d3
@ -14,71 +14,45 @@ jQuery.ajaxSetup({
|
||||
}
|
||||
});
|
||||
|
||||
// Handle cache's special case and global
|
||||
// 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";
|
||||
s.global = false;
|
||||
}
|
||||
});
|
||||
|
||||
// Bind script tag hack transport
|
||||
jQuery.ajaxTransport( "script", function(s) {
|
||||
|
||||
// This transport only deals with cross domain requests
|
||||
if ( s.crossDomain ) {
|
||||
|
||||
var script,
|
||||
head = document.head || jQuery("head")[0] || document.documentElement;
|
||||
|
||||
var callback;
|
||||
return {
|
||||
|
||||
send: function( _, callback ) {
|
||||
|
||||
script = document.createElement("script");
|
||||
|
||||
script.async = true;
|
||||
|
||||
if ( s.scriptCharset ) {
|
||||
script.charset = s.scriptCharset;
|
||||
}
|
||||
|
||||
script.src = s.url;
|
||||
|
||||
// Attach handlers for all browsers
|
||||
script.onload = script.onreadystatechange = function( _, isAbort ) {
|
||||
|
||||
if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
|
||||
|
||||
// Handle memory leak in IE
|
||||
script.onload = script.onreadystatechange = null;
|
||||
|
||||
// Remove the script
|
||||
if ( script.parentNode ) {
|
||||
script.parentNode.removeChild( script );
|
||||
send: function( _, complete ) {
|
||||
callback = function( type ) {
|
||||
return function() {
|
||||
callback = script.onload = script.onerror = null;
|
||||
jQuery( script ).remove();
|
||||
if ( type ) {
|
||||
complete( type === "success" ? 200 : 404, type );
|
||||
}
|
||||
|
||||
// Dereference the script
|
||||
script = null;
|
||||
|
||||
// Callback if not abort
|
||||
if ( !isAbort ) {
|
||||
callback( 200, "success" );
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
|
||||
// Use native DOM manipulation to avoid our domManip AJAX trickery
|
||||
head.insertBefore( script, head.firstChild );
|
||||
var script = jQuery.extend( document.createElement("script"), {
|
||||
async: true,
|
||||
charset: s.scriptCharset,
|
||||
src: s.url,
|
||||
onload: callback("success"),
|
||||
onerror: callback("error")
|
||||
});
|
||||
callback = callback();
|
||||
document.head.appendChild( script );
|
||||
},
|
||||
|
||||
abort: function() {
|
||||
if ( script ) {
|
||||
script.onload( undefined, true );
|
||||
if ( callback ) {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user