區分瀏覽器操作:刷新與關閉
在 Web 開發中,區分 ONUNLOAD 事件期間的頁面刷新和瀏覽器關閉可能會帶來挑戰。這是一個利用HTML5 本地儲存和客戶端/伺服器通訊的解決方案:
-
頁面卸載:
- 實作onunload 事件處理程序在視窗上,例如myUnload()。
- 將本機儲存標誌 myUnloadEventFlag 設定為目前時間戳記。
- 通知伺服器在某些情況下可能會發生斷開連線(例如瀏覽器關閉)透過 AJAX 呼叫 (askServerToDisconnectUserInAFewSeconds()) 秒。
-
頁面載入:
- 實作 onload 事件處理程序在 body 上,例如 myLoad()。
- 從本機儲存中擷取 myUnloadEventFlag 並與目前時間戳進行比較。
- 如果上一個卸載事件與目前卸載事件之間的持續時間小於 10秒,可能是重新載入(透過askServerToCancelDisconnectionRequest()取消斷開連線要求)。
- 如果持續時間大於10秒,則可能是瀏覽器關閉。
-
伺服器端:
- 收集清單中的斷開連接請求,並設定一個計時器執行緒(例如,每20 秒)來檢查清單。
- 當斷開連線請求逾時(例如,5 秒後)時,中斷使用者連線。
- 如果收到取消要求,則從清單中刪除對應的斷開連線請求。
這種方法還可以區分選項卡/視窗關閉、關注的連結和提交的表單。它適用於支援 HTML5 本機儲存的瀏覽器,並且比依賴遊標位置等特定事件屬性更可靠。
以上是Web 開發中如何可靠地區分頁面刷新和瀏覽器關閉?的詳細內容。更多資訊請關注PHP中文網其他相關文章!