我在 jQuery 1.10.1 中看到,如果$.ajax
在页面卸载发生时(例如,由于用户单击链接或重新加载页面)正在进行请求,则会error:
调用回调。
在 jQuery 2.0.0 或 2.0.2 中似乎并非如此。这太棒了。
SO上至少有7个问题,询问error:
导航时是否被调用。例如,当用户单击刷新时处理 ajax 错误
请参阅此jsfiddle - 它开始运行 1.10.1,但您可以在左侧的控件中将其更改为 2.0.2。本质上:
$.ajax({
type: "POST",
url: "/echo/json/",
data: {
json: JSON.stringify({
a: 23
}),
delay: 30
},
cache: false,
success: function (json) {
$('#result').text(JSON.stringify(json));
},
error: function () {
alert("error callback called");
}
});
请注意警报是如何针对 1.10.1 而不是针对 2.0.2 显示的。
但是,我在“jQuery 2.0 Released”公告中没有看到任何与此相关的内容。
我可以依靠这个被修复/改变还是这是一个可能依赖于浏览器的事故或其他什么?它似乎至少在 Chromium 和移动 Safari (iPad) 中得到了修复。
我正在寻找修复的来源,因此我可以查看是否可以让 1.x 停止调用错误处理程序,或者至少在错误回调中检测这是否是由于用户操作/导航造成的。特别是因为到目前为止我见过的最好的解决方案是在回调beforeunload
时检测页面卸载。error:
问题是,这beforeunload
在移动 safari 中不起作用。
FWIW:我正在 Ubuntu linux 12.04 上进行测试。
已编辑:删除声称它也为 Firefox 修复的声明。它不是。