window.history

一:历史记录概述javascript

前进与后退vue

一、window.history.back()java

二、window.history.forward();浏览器

移动到指定的历史记录点安全

window.history.go(num) num为正向前移动num页,为负则是后退num页。session

二: 添加和修改历史记录条目firefox

HTML5引进了history.pushState()方法和history.replaceState()方法,它们容许你逐条地添加和修改历史记录条目。这些方法能够协同window.onpopstate事件一块儿工做。对象

使用history.pushState()会改变referrer的值,而在你调用方法后建立的XMLHttpRequest对象会在HTTP请求头中使用这个值。referrer的值则是建立XMLHttpRequest 对象时所处的窗口的URL。事件

 

pushState()方法ip

pushState()方法有三个参数:一个状态对象,一个标题 ,一个可选的URL地址。 下面来单独考察这三个参数的细节:

  一、状态对象(state object) 一个javascript对象,与用pushState()方法建立的新历史记录条目关联。不管什么时候用户导航到新建立的状态,popstate时间都会被触发,而且事件对象的state属性都包含历史记录条目的状态对象的拷贝。

任何可序列化的对象均可以被当作状态对象。由于Firefox浏览器会把状态对象保存到用户的硬盘,这样它们就能在用户重启浏览器以后被还原,咱们强行限制状态对象的大小为640k。若是你向pushState()方法传递了一个超过该限额的状态对象,该方法会抛出异常。若是你须要存储很大的数据,建议使用sessionStorage或localStorage。

  二、标题(title)firefox浏览器目前会忽略该参数,虽然之后可能会用上。考虑到将来可能会对该方法进行修改,传一个空字符串会比较安全。或者,你也能够传入一个简短的标题,标明要进入的状态。(以上都是MDN上的原话,在vue的路由中,有用到这个标题)。

  三、地址(URL)新的历史记录条目的地址。浏览器不会在调用pushState()方法后加载该地址,但以后,可能会试图加载,例如用户重启浏览器。新的URL不必定是绝对路径;若是是相对路径,它将以当前的URL为基准;传入的URL与当前的URL应该是同源的,不然,pushState()会抛出异常。该参数是可选的;不指定的话则为文档当前URL。

 

某种意义上,调用pushState()有点相似于设置window.location='#foo',它们都会在当前文档内建立和激活新的历史记录条目。但pushState()有本身的优点:

  一、新的URL能够是任意的同源URL,与此相反,使用window.location方法时,只有仅修改hash才能停留在相同的document中。

  二、根据我的需求来决定是否修改URL。相反,设置window.location='#foo',只有在当前hash值很多foo时才建立一条新的历史记录。

  二、你能够在新的历史记录条目中添加抽象数据。若是使用基于hash方法,你只能把相关数据转码成一个很短的字符串。

注意pushState()方法永远不会触发hashchange事件,即使新的地址只变动了hash值。

replaceState()方法

history.replaceState()操做相似于history.pushState(),不一样之处在于replaceState()方法会修改当前历史记录条目。当你为了响应用户的某些操做,而要更新当前历史记录条目的状态对象或URL时,使用replaceState()方法会特别合适。

popstate()事件

每当激活历史记录发生变化时,都会触发popstate事件。若是被激活的历史记录条目是由pushState()所建立,或是被replaceState()方法影响到的,popstate事件的状态属性将包含历史记录的状态对象的一个拷贝。

读取当前状态

在页面加载时,可能会包含一个非空的状态对象。这种状况是会发生的,例如,若是页面中使用pushState()或replaceState()方法设置了一个状态对象,而后用户重启了浏览器。当页面从新加载时,页面会触发onload事件,但不会触发popstate事件。可是,若是你读取history.state属性,你会获得一个与popstate事件触发时获得的同样的状态对象。你能够直接读取当前历史记录条目的状态,而不须要等待popstate事件:

var currentState = history.state;

相关文章
相关标签/搜索