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.push、router.replace和router.go跟window.history.pushState、window.history.replaceState和window.history.go很像
popstate 事件
每当活动的历史记录项发生变化时, popstate 事件都会被传递给window对象。如果当前活动的历史记录项是被 pushState 创建的,或者是由 replaceState 改变的,那么 popstate 事件的状态属性 state 会包含一个当前历史记录状态对象的拷贝
hashchange 事件
当页面的hash值改变的时候触发,常用于构建单页面应用。
引用: