2012-04-23 109 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