如果用户导航到另一个页面,我想中止一些(可能)长时间运行的 ajax 调用。以下 jQuery 代码在离开页面时对所有挂起的 XMLHttpRequest 对象调用 abort:
$.ajaxSetup({
beforeSend: function(xhr) {
$(window).bind('beforeunload', function() {
xhr.abort();
});
}
});
在一个测试用例中,我在调用服务器端操作时强制等待 10 秒。使用 Firebug,我确认当我单击页面上的任何链接时,上述代码确实会导致所有挂起的 ajax 调用立即停止。但是,浏览器仍会等待整整 10 秒,然后才能转到下一页。IE 似乎表现出相同的行为。这是已知的浏览器行为吗?在这种情况下,我能做些什么让用户立即离开页面?提前致谢。