History

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

History 接口是 History API 的一部分,允许操作浏览器的会话历史,即当前页面所在的标签页或框架中访问过的页面。

全局对象 history 提供了唯一的 history 实例(它是一个单例)。

注意: 此接口仅在主线程(Window)上可用。在 WorkerWorklet 上下文中无法访问。

实例属性

History 接口不继承任何属性。

length 只读

返回一个 Integer,表示会话历史中的元素数量,包括当前加载的页面。例如,在新标签页中加载的页面,此属性返回 1

scrollRestoration

允许 Web 应用程序在历史导航时显式设置默认的滚动恢复行为。此属性可以是 automanual

state 只读

返回一个 any 值,表示历史栈顶部的状态。这是一种在不等待 popstate 事件的情况下查看状态的方式。

实例方法

History 接口不继承任何方法。

back()

此异步方法会转到会话历史中的上一页,与用户点击浏览器 后退 按钮的操作相同。等同于 history.go(-1)

尝试在会话历史的第一页之前调用此方法来后退,将不起作用,也不会引发异常。

forward()

此异步方法会转到会话历史中的下一页,与用户点击浏览器 前进 按钮的操作相同;等同于 history.go(1)

尝试在会话历史的最新页之后调用此方法来前进,将不起作用,也不会引发异常。

go()

异步加载会话历史中的一页,通过其相对于当前页面的相对位置标识,例如 -1 表示上一页,1 表示下一页。如果指定了一个超出边界的值(例如,在会话历史中没有先前访问过的页面时指定 -1),则此方法将静默地不起作用。不带参数或值为 0 调用 go() 会重新加载当前页面。

pushState()

将给定的数据推送到会话历史栈中,并指定标题(如果提供,则指定 URL)。DOM 将数据视为不透明;您可以指定任何可序列化的 JavaScript 对象。请注意,除 Safari 外,所有浏览器目前都会忽略标题参数。有关更多信息,请参阅 使用 History API

replaceState()

使用指定的数据、标题(如果提供,则指定 URL)更新历史栈中的最新条目。DOM 将数据视为不透明;您可以指定任何可序列化的 JavaScript 对象。请注意,除 Safari 外,所有浏览器目前都会忽略标题参数。有关更多信息,请参阅 使用 History API

规范

规范
HTML
# the-history-interface

浏览器兼容性

另见