2011-07-25 45 views
7

我想在用戶離開頁面之前進行AJAX調用(基本上在離開頁面之前和刷新頁面之前)?如何知道用戶何時離開頁面並刷新頁面

這是怎麼做到的。我試圖用jQuery搜索某些東西,但沒有得到任何東西。

我嘗試使用下面的代碼 -

window.onbeforeunload(function(){alert('before unload');}); 

但離開頁面(關閉瀏覽器選項卡)時,或刷新頁面永遠不會出現的警告框。

這是如何實現的?

+1

onBeforeUnload,據我所知,是一個IE瀏覽器的事件。其他瀏覽器可能已經實現了它,但沒有確定。也許可以解釋目的,我們可以找到一個替代解決方案?抓住用戶離開相當困難... –

+0

PS,[MDN onbeforeunload](https://developer.mozilla.org/zh/DOM/window.onbeforeunload)。同樣,它上面的[MSDN文檔](http://msdn.microsoft.com/en-us/library/ms536907%28VS.85%29.aspx)。 –

+0

布拉德 - 我正在做一些跟YouTube視頻有關的跟蹤,比如用戶觀看視頻的實際持續時間。爲此,我使用採樣率(如5秒)並更新視頻結束時需要發送給服務器的全局JS變量。另外,用戶可以在觀看其中的一部分後(在到達視頻結束之前)離開/重新加載頁面。所以我需要知道用戶什麼時候離開/重新加載頁面,以便我可以對服務器進行AJAX調用。另外,想問這是否是推薦的方式? – Siddharth

回答

5
$(window).unload(function() { 
    alert('Visitor left page'); 
}); 

關於Ajax調用,你可以做到這一點,但你必須設置asyncfalse

$.ajax({ 
    async: false, 
    ... 
}); 
+0

其值得注意的是,這在某些設備上不起作用,如iPad – Blowsie

7

你應該嘗試從unload() jQuery的:

$(window).unload(function(){ 
    //Do your call 
    alert('before unload'); 
    }); 

奧羅您可以使用beforeunload事件。你應該對它進行測試,因爲瀏覽器傾向於以不同的方式嵌入這些東西。取自jquery文檔:

卸載事件的確切處理從版本到 版本的瀏覽器有所不同。例如,某些版本的Firefox在遵循鏈接時會觸發 事件,但當窗口關閉時不會觸發該事件。在 的實際用法中,應在所有支持的瀏覽器上測試行爲, 並與專有的beforeunload事件進行對比。

+0

+1擊敗我6秒! – Shef

+0

謝謝!這個解決方案適用於我。當我刷新頁面以及關閉窗口/瀏覽器選項卡時,我會看到Alert框。我只需要問一下我在那裏做了一個ajax調用,我可以確定我的服務器會接到電話 - 我不必擔心響應。 – Siddharth

+1

那麼,如果你把呼叫放在警報框之前,你會很確定呼叫到達你的服務器。 –

2

你的代碼根本就是錯的。 unbeforeunload用於詢問該人是否真的想離開該頁面。 您需要卸載。

window.onunload = function() { 
    // Make your AJAX call 

} 

更好地利用jQuery.unload()方法

+0

是否使用JQuery。請幫我解釋我發佈在上面的答案。 – Siddharth

+0

尼古拉是對的,在那裏。 – Claudio

相關問題