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

浏览器兼容性

另见