history && location

130 阅读1分钟

location

**Location **接口表示链接到的对象的位置(URL), Document和 Window接口都有这样一个链接Location

history

**history**接口可以在不刷新页面的前提下动态改变浏览器地址栏中的URL地址,动态修改页面上所显示资源。

//历史记录中页面总数
history.length

pushState/router.push

添加一条历史记录,不刷新页面

history.pushState(state, title, url);

state : 一个于指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数中。如果不需要这个对象,此处可以填null。 title : 新页面的标题,但是所有浏览器目前都忽略这个值,因此这里可以填null。 url : 新的网址,必须与前页面处在同一个域。浏览器的地址栏将显示这个网址。

replaceState/router.replace

history.pushState() 非常相似,区别在于 replaceState() 是修改了当前的历史记录项而不是新建一个,不刷新页面

//demo.html 
history.replaceState(null, null,'?one')

当前的历史记录http://localhost/class/demo.html被替换为http://localhost/class/demo.html?one

vue中的router.pushrouter.replacerouter.gowindow.history.pushStatewindow.history.replaceStatewindow.history.go很像

popstate 事件

​ 每当活动的历史记录项发生变化时, popstate 事件都会被传递给window对象。如果当前活动的历史记录项是被 pushState 创建的,或者是由 replaceState 改变的,那么 popstate 事件的状态属性 state 会包含一个当前历史记录状态对象的拷贝

hashchange 事件

当页面的hash值改变的时候触发,常用于构建单页面应用。

引用:

juejin.cn/post/684490…

developer.mozilla.org/zh-CN/docs/…