window.onbeforeunload = function (e) {
someFunction();
}
显然,每当有页面刷新时 someFunction() 都会被调用。但是在 Internet Explorer 中,只有在部分页面加载时 someFunction() 才会被调用。我怎样才能防止这种情况发生?或者如何使用 jQuery 添加一个事件侦听器,该事件侦听器在进行异步调用时触发?
window.onbeforeunload = function (e) {
someFunction();
}
显然,每当有页面刷新时 someFunction() 都会被调用。但是在 Internet Explorer 中,只有在部分页面加载时 someFunction() 才会被调用。我怎样才能防止这种情况发生?或者如何使用 jQuery 添加一个事件侦听器,该事件侦听器在进行异步调用时触发?
在异步请求的生命周期中调用了许多方法。你可以绑定到任意数量的它们。有关列表,请参见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 对象,以及为调用返回的状态。
$.ajaxSetup({
complete: function( jqHXR, status ) {
console.log( 'Completed: ' + status );
}
});