識別頁面刷新與瀏覽器關閉
觸發 ONUNLOAD 事件時,很難區分刷新頁面和關閉瀏覽器。本文提出了此問題的解決方案。
解決方案
此解決方案利用HTML5 的本地儲存和伺服器客戶端AJAX 通訊:
-
視窗卸載處理程序:
- 在視窗上註冊一個onunload 處理程序。
- 在此處理程序中,設定一個本機儲存標誌來指示頁面卸載( myUnloadEventFlag)。
- 向伺服器發送AJAX 請求,要求在指定的延遲(例如5 秒)後斷開用戶連接
-
主體載入處理程序:
- 在頁面主體上註冊一個onload 處理程序。
- 在此處理程序中,檢查卸載事件的本機儲存標誌。
- 如果當前時間與flag的時間之差小於指定的延遲,則頁面已重新加載,必須取消伺服器的斷開連接請求。
- 否則,瀏覽器關閉。
-
伺服器處理:
- 維護斷開連接請求清單。
- 運行計時器,定期檢查清單。
- 當請求逾時後,中斷使用者連線。
- 如果收到取消要求,則從清單中刪除對應的斷開連線請求。
這種方法透過考慮卸載事件的時間來區分選項卡/視窗關閉和頁面重新載入。它適用於其他事件,例如透過在相關頁面上放置事件處理程序來追蹤連結和提交表單。
限制:
此解決方案需要 HTML5 本地存儲支持,並且可能不支持可在 MSIE7 等舊版瀏覽器上工作。
以上是JavaScript如何區分頁面刷新和瀏覽器關閉?的詳細內容。更多資訊請關注PHP中文網其他相關文章!