window.onbeforeunload = function (e) {
someFunction();
}
显然,只要有页面刷新,就会调用someFunction()。但是在Internet Explorer中,只有在部分页面加载时,someFunction()才会被调用。我怎样才能防止这种情况发生?或者我如何添加一个事件监听器,其中jQuery会在进行异步调用时被触发?
答案 0 :(得分:0)
在异步请求的生命周期中调用了许多方法。你可以绑定任意数量的。有关列表,请参阅http://api.jquery.com/category/ajax/。这可以防止您像在此处一样碰到不同的浏览器实现。
例如,使用$.ajaxSetup()
我可以设置一个函数在每个请求之前运行:
$.ajaxSetup({
beforeSend: function() {
console.log( 'New request going out.' )
}
});
您可能还希望在调用完成后运行逻辑,在这种情况下,您将函数应用于传递给complete
的对象的$.ajaxSetup()
成员:
$.ajaxSetup({
complete: function() {
console.log( 'Call completed.' );
}
});
这些方法有一些参数被抛出,如果你正在执行需要知道具体做出哪些请求的逻辑,你可能想要使用这些参数。例如,Complete将传递jQuery使用的XHR对象,以及为调用返回的Status。
$.ajaxSetup({
complete: function( jqHXR, status ) {
console.log( 'Completed: ' + status );
}
});