需求描述:
从页面A跳转到页面B,现在要给A和B之间添加一个历史记录C,
也就是A-C-B。
可是并没有那么一个方法来直接添加历史记录,那就只能使用移花接木大法了!
解决方法:
思路就是利用pushState和replaceState方法来实现:
// 1、先保存当前页地址, 假设当前在B页面
let urlB = window.location.href
///2、替换当前页地址为C页面,地址urlC
window.history.replaceState(null, '', urlC)
// 3、追加一个B页面的地址并切换到B
window.history.pushState(null, '', urlB)
- 这样的方式可以做到用户无感知的追加访问历史记录
- 需要注意ie9及以下版本不支持pushState和replaceState操作
附录:
MDN上pushState和replaceState方法的使用说明:
pushState
replaceState