2012-12-28 285 views
1

其實,這是我最後的question的延續。我仍然面臨問題,因爲當我刷新瀏覽器,無論是卸載或beforeunload也解僱了我只希望他們在瀏覽器關閉時。只是在我腦海中想要使用window.outerHeight或window.innerHeight,但仍然無法弄清楚如何做到這一點。任何建議/片段?提前致謝。檢測刷新瀏覽器卸載/ beforeunload當瀏覽器關閉

+3

至於服務器或瀏覽器而言,親密和導航離開該頁面是同義的。 –

+0

@BradChristie:如果它的代名詞,然後就會有沒有機會只對收盤瀏覽器隔離卸載/ beforeunload事件? –

+0

正確的假設。你可以重新訪問,因爲服務器會執行一個新的動作,但如果什麼都沒有發生,你就無法捕捉到這個(關閉窗口)的缺席。這就是爲什麼網站使用「上次訪問後的時間」來確定誰仍然「在線」。 –

回答

1

據我知道這是不可能檢測到從瀏覽器中刷新單獨關閉瀏覽器,因爲瀏覽器不提供網頁(窗口)與信息。就你的頁面和它的Javascript代碼而言,這兩個是一樣的。

因爲它是你需要的,得到它是使用一些能夠訪問這些信息,即只有這樣的瀏覽器信息。一個瀏覽器插件。但是,您需要爲每個瀏覽器創建一個插件,並讓每個用戶安裝它。由於我非常懷疑你會發現這是值得的,你的問題的真正答案(儘管可能會令人沮喪)是:停止嘗試檢測刷新與關閉並繼續前進。

+0

其實,我只是意識到我說的並不完全正確:你*可以*使用本地存儲來跟蹤最後一頁加載的時間('var localStorage.lastLoad = new Date()'),然後檢查那個時間在頁面加載;如果'new Date()'足夠接近'localStorage.lastLoad',則可以推斷髮生了重載。但是,除非他們重新加載,否則這仍然不會讓你對這些信息做任何事情,所以這可能不是很有幫助。 – machineghost

+0

你能否給出更確切的片段?我仍然不明白你的觀點。在此先感謝 –

+0

我的評論是更多的一邊試圖儘可能事實準確;這不是一個真正的解決方案。當有人離開你的頁面(即onBeforeUnload)時,它*不會*告訴你他們是否正在重新加載,轉到不同的頁面或完全關閉瀏覽器。它會告訴你的是,當頁面首次加載時,用戶只是刷新或第一次來到頁面(即使這樣,它只是一個猜測)。 – machineghost