2012-04-23 43 views
0
window.onbeforeunload = function (e) { 
    someFunction(); 
} 

很明显,每当有页面刷新时,someFunction()被调用。但是,只有在部分页面加载时,才会在Internet Explorer中调用someFunction()。我怎样才能防止这种情况发生?或者我怎样才能添加一个事件侦听器与jQuery,每当异步调用被触发时触发?window.onbeforeunload在IE中触发异步调用?

回答

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.'); 
    } 
}); 

这些方法有几个参数扔自己的方式,你可能想,如果你执行的是需要知道哪些请求specificall逻辑使用y被制造出来了。例如,完成将传递jQuery使用的XHR对象,以及为该调用返回的状态。

$.ajaxSetup({ 
    complete: function(jqHXR, status) { 
    console.log('Completed: ' + status); 
    } 
}); 
+0

感谢您的回应,但由于某些原因,他们不会被触发。可能是因为部分刷新页面的链接是使用控件生成的?我对.NET不太了解。 – 2012-04-23 23:39:52

+0

@SammyD这些全局回调只会在您使用jQuery的ajax方法进行异步调用时触发。您是使用jQuery的ajax方法来打电话,还是手动构建您的XHR对象? – Sampson 2012-04-23 23:42:36

+0

不,他们使用jQuery的ajax方法。它使用。 – 2012-04-23 23:56:09