46 lines (44 sloc) 1.172 kB
| (function( jQuery ) { | |
| if ( window.XDomainRequest ) { | |
| jQuery.ajaxTransport(function( s ) { | |
| if ( s.crossDomain && s.async ) { | |
| if ( s.timeout ) { | |
| s.xdrTimeout = s.timeout; | |
| delete s.timeout; | |
| } | |
| var xdr; | |
| return { | |
| send: function( _, complete ) { | |
| function callback( status, statusText, responses, responseHeaders ) { | |
| xdr.onload = xdr.onerror = xdr.ontimeout = xdr.onprogress = jQuery.noop; | |
| xdr = undefined; | |
| complete( status, statusText, responses, responseHeaders ); | |
| } | |
| xdr = new XDomainRequest(); | |
| xdr.open( s.type, s.url ); | |
| xdr.onload = function() { | |
| callback( 200, "OK", { text: xdr.responseText }, "Content-Type: " + xdr.contentType ); | |
| }; | |
| xdr.onerror = function() { | |
| callback( 404, "Not Found" ); | |
| }; | |
| xdr.onprogress = function() {}; | |
| if ( s.xdrTimeout ) { | |
| xdr.ontimeout = function() { | |
| callback( 0, "timeout" ); | |
| }; | |
| xdr.timeout = s.xdrTimeout; | |
| } | |
| xdr.send( ( s.hasContent && s.data ) || null ); | |
| }, | |
| abort: function() { | |
| if ( xdr ) { | |
| xdr.onerror = jQuery.noop(); | |
| xdr.abort(); | |
| } | |
| } | |
| }; | |
| } | |
| }); | |
| } | |
| })( jQuery ); |