Window: pageshow 事件

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

當瀏覽器因導航而顯示視窗的文件時,會向 Window 傳送 pageshow 事件。

這包括:

  • 首次載入頁面
  • 在同一視窗或標籤頁中從另一個頁面導航到此頁面
  • 在移動作業系統上恢復已凍結的頁面
  • 使用瀏覽器的前進或後退按鈕返回到此頁面

注意:在初始頁面載入期間,pageshow 事件在 load 事件之後觸發。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("pageshow", (event) => { })

onpageshow = (event) => { }

事件型別

一個 PageTransitionEvent。繼承自 Event

Event PageTransitionEvent

事件屬性

PageTransitionEvent.persisted 只讀

表示文件是否從快取中載入。

事件處理程式別名

除了 Window 介面之外,事件處理屬性 onpageshow 也可以在以下目標上使用:

示例

此示例為陣列 events 中列出的事件設定事件處理程式。處理程式 eventLogger() 將發生的事件型別記錄到控制檯,幷包括 pageshowpagehide 事件上的 persisted 標誌的值。

JavaScript

js
const events = ["pagehide", "pageshow", "unload", "load"];

const eventLogger = (event) => {
  switch (event.type) {
    case "pagehide":
    case "pageshow": {
      let isPersisted = event.persisted ? "persisted" : "not persisted";
      console.log(`Event: ${event.type} - ${isPersisted}`);
      break;
    }
    default:
      console.log(`Event: ${event.type}`);
      break;
  }
};

events.forEach((eventName) => window.addEventListener(eventName, eventLogger));

HTML

html
<p>
  Open the console and watch the output as you navigate to and from this page.
  Try loading new pages into this tab, then navigating forward and backward
  through history, noting the events' output to the log.
</p>

結果

規範

規範
HTML
# event-pageshow

瀏覽器相容性

另見