在实际的开发工作中可能会有如下需求:
需要更改url,但是又不需要页面重新加载。类似于各大单页应用框架的路由实现。
首页,有两种方式可以实现更改url而不刷新页面。
- hash 散列值
location.hash = '#hash'
// 更改URL的hash值会在浏览器的历史记录中增加一条新的记录,且不会触发浏览器的刷新。
2. pushState | replaceState 状态管理API
- pushState,可以将一个新的状态信息推到历史记录中
- replaceState,可以更新当前历史状态信息
history.pushState({}, 'new title', 'new host')
// 可以将new host(同一个域下的地址)推到当前历史栈顶部,且不会触发页面重新加载。
// replaceState类似,但是是替换当前历史状态信息