History - 操纵浏览器会话历史
History 接口允许操纵浏览器的会话历史,即在当前页面加载的选项卡或框架中访问的页面。
属性
History 接口没有继承任何属性。
History.length 只读
返回一个 Integer,表示会话历史记录的数量(包括当前加载的页面)。例如,对于在新选项卡中加载的页面,此属性返回 1。
History.current 只读 已过时 Gecko 26
返回一个 DOMString,表示会话历史记录的活动项的 URL。此属性从未可用于 Web 内容,并且不再受任何浏览器的支持。请改用 Location.href。
History.next 只读 已过时 Gecko 26
返回一个 DOMString,表示会话历史记录中下一个项目的 URL。此属性从未对 Web 内容可用,并且不受其他浏览器支持。
History.previous 只读 已过时 Gecko 26
返回一个 DOMString,表示会话历史记录中上一项的 URL。此属性从未对 Web 内容可用,并且不受其他浏览器支持。
History.scrollRestoration
允许 Web 应用程序在历史记录导航中显式设置默认滚动恢复行为。此属性的值可以是 auto 或 manual。
History.state 只读
返回一个 any 值,表示历史堆栈顶部状态。这是一种在不必等待 popstate 事件的情况下查看状态的方法。
方法
History 接口没有继承任何方法。
History.back()
转到会话历史记录中的上一页,与用户单击浏览器的 “后退” 按钮时的操作相同;它相当于 history.go(-1) 。
在会话历史记录中的第一页调用此方法没有任何效果,也不会引发异常。
Calling this method to go back beyond the first page in the session history has no effect and doesn't raise an exception.
History.forward()
转到会话历史记录中的下一页,与用户单击浏览器的 “前进” 按钮时的操作相同;它相当于 history.go(1) 。
在会话历史记录中的最新页面调用此方法没有任何效果,也不会引发异常。
History.go()
从会话历史记录加载页面,该页面由其与当前页面的相对位置标识,例如前一页为 -1 或下一页为 1。如果指定了越界值(例如,在会话历史记录中没有先前访问过的页面时指定 -1),则此方法将静默无效。在没有参数或值为 0 的情况下调用 go() 会重新加载当前页面。 Internet Explorer 允许您指定字符串而不是整数来转到历史记录列表中的特定 URL。
History.pushState()
将给定数据,标题和 URL(如果提供的话)推送到会话历史堆栈。您可以指定推送的数据为任何可以序列化的 JavaScript 对象。请注意,Firefox 目前忽略 title 参数;有关更多信息,请参阅操纵浏览器历史记录。
History.replaceState()
将给定数据,标题和 URL(如果提供的话)更新到会话历史堆栈上的最新条目。您可以指定推送的数据为任何可以序列化的 JavaScript 对象。请注意,Firefox 目前忽略 title 参数;有关更多信息,请参阅操纵浏览器历史记录。
规范
| 规范 | 状态 | 备注 |
|---|---|---|
| HTML Living Standard History 的定义 |
现行的标准 | 增加了 scrollRestoration 属性。 |
| HTML5 History 的定义 |
推荐 | 初始定义。 |
| Custom Scroll Restoration - History-based API History 的定义 |
编者的草案 | 增加了 scrollRestoration 属性。 |
桌面浏览器兼容性
| 特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| 基础支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
back | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
forward | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
go | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
length | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
pushState | 5 | 支持 | 41 | 10 | 11.5 | 5 |
replaceState | 5 | 支持 | 41 | 10 | 11.5 | 5 |
scrollRestoration | 46 | 不支持 | 46 | 不支持 | 33 | 支持 |
state | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
移动浏览器兼容性
| 特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
|---|---|---|---|---|---|---|---|
| 基础支持 | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 支持 |
back | 支持 | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
forward | 支持 | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
go | 支持 | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
length | 支持 | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
pushState | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 4.3 |
replaceState | 支持 | 支持 | 支持 | 支持 | 未知 | 支持 | 4.3 |
scrollRestoration | 不支持 | 46 | 不支持 | 支持 | 未知 | 支持 | 支持 |
state | 支持 | 支持 | 未知 | 支持 | 未知 | 未知 | 未知 |
1. 在 Firefox 2 到 5 中,使用 JSON 序列化传递的对象。从 Firefox 6 开始,使用结构化克隆算法对对象进行序列化。这允许安全地传递更多种类的对象。
相关链接
Window.history属性返回当前会话的历史记录。