Merge branch 'bug6242' of https://github.com/csnover/jquery into csnover-bug6242
This commit is contained in:
commit
9759e9f6bb
19
src/ajax.js
19
src/ajax.js
|
@ -195,6 +195,17 @@ jQuery.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
ajax: function( origSettings ) {
|
ajax: function( origSettings ) {
|
||||||
|
// IE8 leaks a lot when we've set abort, and IE6-8 a little
|
||||||
|
// when we have set onreadystatechange. Bug #6242
|
||||||
|
// XXX IE7 still leaks when abort is called, no matter what
|
||||||
|
// we do
|
||||||
|
function cleanup() {
|
||||||
|
// IE6 will throw an error setting xhr.abort
|
||||||
|
try {
|
||||||
|
xhr.abort = xhr.onreadystatechange = jQuery.noop;
|
||||||
|
} catch(e) {}
|
||||||
|
}
|
||||||
|
|
||||||
var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),
|
var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),
|
||||||
jsonp, status, data, type = s.type.toUpperCase(), noContent = rnoContent.test(type);
|
jsonp, status, data, type = s.type.toUpperCase(), noContent = rnoContent.test(type);
|
||||||
|
|
||||||
|
@ -406,13 +417,12 @@ jQuery.extend({
|
||||||
|
|
||||||
requestDone = true;
|
requestDone = true;
|
||||||
if ( xhr ) {
|
if ( xhr ) {
|
||||||
xhr.onreadystatechange = jQuery.noop;
|
cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
// The transfer is complete and the data is available, or the request timed out
|
// The transfer is complete and the data is available, or the request timed out
|
||||||
} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
|
} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
|
||||||
requestDone = true;
|
requestDone = true;
|
||||||
xhr.onreadystatechange = jQuery.noop;
|
|
||||||
|
|
||||||
status = isTimeout === "timeout" ?
|
status = isTimeout === "timeout" ?
|
||||||
"timeout" :
|
"timeout" :
|
||||||
|
@ -454,10 +464,7 @@ jQuery.extend({
|
||||||
xhr.abort();
|
xhr.abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop memory leaks
|
cleanup();
|
||||||
if ( s.async ) {
|
|
||||||
xhr = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue