mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Fix #14379: AJAX requests on unload
This commit is contained in:
parent
ebabb33411
commit
f9d41ac641
@ -18,18 +18,16 @@ var xhrSupported = jQuery.ajaxSettings.xhr(),
|
||||
// #1450: sometimes IE returns 1223 when it should be 204
|
||||
1223: 204
|
||||
},
|
||||
// Support: IE9
|
||||
// We need to keep track of outbound xhr and abort them manually
|
||||
// because IE is not smart enough to do it all by itself
|
||||
xhrId = 0,
|
||||
xhrCallbacks = {};
|
||||
|
||||
// Support: IE9
|
||||
// Open requests must be manually aborted on unload (#5280)
|
||||
if ( window.ActiveXObject ) {
|
||||
jQuery( window ).on( "unload", function() {
|
||||
for ( var key in xhrCallbacks ) {
|
||||
xhrCallbacks[ key ]();
|
||||
}
|
||||
xhrCallbacks = undefined;
|
||||
});
|
||||
}
|
||||
|
||||
|
30
test/data/ajax/onunload.html
Normal file
30
test/data/ajax/onunload.html
Normal file
@ -0,0 +1,30 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
|
||||
<title>onunload ajax requests (#14379)</title>
|
||||
<script src="../../jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<form id="navigate" action="about:blank"></form>
|
||||
<script>
|
||||
jQuery( window ).on( "unload", function() {
|
||||
var ajaxStatus;
|
||||
jQuery.ajax({
|
||||
url: "../name.html",
|
||||
async: false,
|
||||
complete: function( xhr, status ) {
|
||||
ajaxStatus = status;
|
||||
}
|
||||
});
|
||||
parent.iframeCallback( ajaxStatus );
|
||||
});
|
||||
|
||||
jQuery(function() {
|
||||
setTimeout(function() {
|
||||
document.getElementById( "navigate" ).submit();
|
||||
}, 0 );
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1522,6 +1522,11 @@ module( "ajax", {
|
||||
}
|
||||
} );
|
||||
|
||||
testIframeWithCallback( "#14379 - jQuery.ajax() on unload", "ajax/onunload.html", function( status ) {
|
||||
expect( 1 );
|
||||
strictEqual( status, "success", "Request completed" );
|
||||
});
|
||||
|
||||
//----------- jQuery.ajaxPrefilter()
|
||||
|
||||
ajaxTest( "jQuery.ajaxPrefilter() - abort", 1, {
|
||||
|
Loading…
Reference in New Issue
Block a user