window.onbeforeunload在IE中为异步调用触发?

时间:2012-04-23 23:13:42

标签: jquery internet-explorer asynchronous onbeforeunload

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

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

1 个答案:

答案 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 );
  }
});
相关问题