Window: pagehide 事件
當瀏覽器為了顯示會話歷史中的不同頁面而隱藏當前頁面時,會向 Window 傳送 pagehide 事件。
例如,當用戶點選瀏覽器的“後退”按鈕時,在顯示上一頁之前,當前頁面會收到一個 pagehide 事件。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
js
addEventListener("pagehide", (event) => { })
onpagehide = (event) => { }
事件型別
一個 PageTransitionEvent。繼承自 Event。
事件屬性
PageTransitionEvent.persisted只讀-
表示文件是否從快取中載入。
事件處理程式別名
除了 Window 介面,事件處理程式屬性 onpagehide 也可在以下目標上使用
用法說明
與 unload 和 beforeunload 事件一樣,瀏覽器不可靠地觸發此事件,尤其是在移動裝置上。例如,在以下場景中,pagehide 事件根本不會觸發
- 移動使用者訪問您的頁面。
- 使用者隨後切換到不同的應用程式。
- 稍後,使用者從應用程式管理器關閉瀏覽器。
然而,與 unload 和 beforeunload 事件不同,此事件與 往返快取 (bfcache) 相容,因此向此事件新增監聽器不會阻止頁面被包含在 bfcache 中。
用於表示使用者會話結束的最佳事件是 visibilitychange 事件。在不支援 visibilitychange 的瀏覽器中,pagehide 事件是次優選擇。
如果您特別想檢測頁面解除安裝事件,pagehide 事件是最佳選擇。
有關此事件與頁面生命週期中其他事件的關係的更多資訊,請參閱 頁面生命週期 API 指南。
示例
在此示例中,建立了一個事件處理程式來監聽 pagehide 事件,並在頁面被持久化以備將來重用時執行特殊處理。
js
window.addEventListener("pagehide", (event) => {
if (event.persisted) {
/* the page isn't being discarded, so it can be reused later */
}
});
這也可以使用 Window 上的 onpagehide 事件處理程式屬性來編寫
js
window.onpagehide = (event) => {
if (event.persisted) {
/* the page isn't being discarded, so it can be reused later */
}
};
規範
| 規範 |
|---|
| HTML # event-pagehide |
瀏覽器相容性
載入中…
另見
pageshow事件。- 頁面生命週期 API 提供了關於如何在 Web 應用程式中處理頁面生命週期行為的最佳實踐指導。
- PageLifecycle.js:一個處理頁面生命週期行為中跨瀏覽器不一致的 JavaScript 庫。
- 往返快取 解釋了往返快取是什麼,以及它對各種頁面生命週期事件的影響。