History API 允许我们用 js 来操作和访问用户的会话历史记录。在前端路由系统中,History 被广泛使用(对于不支持 History 的老 ie,可以使用 hashchange 事件处理)。History API 都是一些简单好用的功能,没有复杂的功能,知识点也少,今天就来温习一下这组 API。
后退和前进
先来学习两个基本 api。
history.back() // 顾名思义,回退到前一个历史点。和浏览器中 回退 按钮一个效果
history.forward() // 顾名思义,前进到下一个历史点。和浏览器中 前进 按钮一个效果
如果要移动到指定的历史记录点,需要使用 go()
方法。此方法需要传一个整数数字参数,表示相对当前记录点位置。如果是0,表示跳转到当前记录点,也就是刷新当前页面。同理有以下等效关系:
history.go(-1) // 和 history.back() 一个效果
history.go(1) // 和 history.forward() 一个效果
history.go() // 如果不指定参数,和 history.go(0) 一个效果
增加和修改历史记录
History 除了前面的基本用法外,还提供了更强大的功能,可以增加和修改历史记录,对应的方法分别是 pushState()
和 replaceState()
。这两个方法都可以在改变页面 url 的情况下不刷新页面。同时通常这两个方法会配合 window