0
window.onbeforeunload = function (e) {
    someFunction();
}

显然,每当有页面刷新时 someFunction() 都会被调用。但是在 Internet Explorer 中,只有在部分页面加载时 someFunction() 才会被调用。我怎样才能防止这种情况发生?或者如何使用 jQuery 添加一个事件侦听器,该事件侦听器在进行异步调用时触发?

4

1 回答 1

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 对象,以及为调用返回的状态。

$.ajaxSetup({
  complete: function( jqHXR, status ) {
    console.log( 'Completed: ' + status );
  }
});
于 2012-04-23T23:21:18.510 回答