本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/06/23/%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E7%9A%84%E5%8E%86%E5%8F%B2%E6%A0%88/
摘要
本文主要讲述了:
- 实例属性
- 方法
- 事件
正文
历史栈是针对于同一个标签页而言的,刷新当前页面对历史栈不会有任何影响
实例属性
history.state
指向栈顶元素的state
如果栈顶元素没有state
,值为null
history.length
历史栈的长度
方法
history.pushState()
将一个元素压入栈顶
元素:
state
:必填,一个可以被序列化的对象unused
:必填,由于历史遗留问题,现阶段传入空字符串即可url
:可选,若存在,则必须和当前网站同源
注:即使提供了url
,浏览器只会先更新地址栏,并不会马上发起 HTTP 请求
history.replaceState()
替换栈顶的元素
事件
window.onpopstate
触发时机:在当前页面使用过history.pushState()
或history.replaceState()
之后,又在当前页面进行了页面导航
示例:页面导航
history.back()
history.forward()
history.go()
(history.go(0)
除外,它相当于刷新)- 用户点击【返回】
- 用户点击【前进】