
HTML 5提供了一个新的API:history,它能够操纵浏览器的历史记录信息
下面就对其进行简单的介绍
浏览历史
前进、后退
1
window.history.forward()1
window.histroy.back()到特定历史
后退一个页面
1
window.history.go(-1)前进一个页面
1
window.history.go(1)前进或后退n个页面
1
2window.history.go(n)
window.history.go(-n)使用
go(0)或者go()刷新页面1
2window.history.go(0)
window.history.go() // 两个都相同获取历史记录长度
1
window.history.length
对历史记录操作
HTML 5 添加了history.pushState()和history.replaceState()方法可以对历史记录条目进行添加或修改。
假设你在http://its-silver.com/blog执行了下面代码
1  | let stateObj = { | 
页面地址就会显示http://its-silver.com/blog/archive
但是页面地址并不会发生跳转,vue-router的mode: history就是靠这个来实现的
pushState() 方法
参数
state object
使用history.state可以访问到当前记录的state,用于存储
title
似乎目前没啥作用
URL
浏览器显示的新地址,可以使用相对路径或绝对路径。如果发生跨域会产生报错
replaceState() 方法
history.replaceState()与history.pushState()行为相同,唯一的区别就是:
history.replaceState()替换了当前历史记录history.pushState()添加了一条新纪录
popstate 事件
触发事件
- 点击前进或后退按钮
 - 使用
history.go()history.forward()history.back() 
使用pushState()或者replaceState()并不会触发该事件
事件的 state 属性是当前历史记录 history.state 的拷贝
1  | window.onpopstate = function(event) { | 
读取State
使用history.state读取当前记录的state
1  | let currentState = history.state | 
