HTML5之history管理

来老师 2014-10-05

比较简单的历史记录管理技术是通过location.hash和hashchange事件来实现的。

在浏览器中设置location.hash会改变当前的URL,同时也会在浏览器的历史记录中增加一条记录。

支持HTML5的浏览器当发现URL中的片段发生变化时,就会在Window对象上触发一个hashchange事件。

这样,在支持hashchange事件的浏览器中,就可以通过设置window.onhashchange为一个处理函数,使得每次历史记录变换导致hash标识符变化的时候,都会调用相应的处理函数。在处理函数中可以对location.hash的值进行解析,然后根据该值进行相应的处理。

此外,HTML5中还定义了一个相对更加复杂和强健的历史记录管理方法,包含history.pushState()方法和popstate事件。

当Web应用进入一个新的状态时,会调用history.pushState()方法,将该状态添加到浏览器的历史记录中。该方法的第一个参数是一个对象,该对象包含用于恢复当前文档状态所需的所有信息;该方法的第二个可选参数是一个可选的标题(普通的文本字符串);该方法的第三个参数是一个可选的URL,表示当前状态的位置。

除了,pushState()方法外,history对象还定义了replaceState()方法,该方法和pushState()方法接受同样的参数,但它是用新的状态代替当前的历史状态。

当通过“后退”和“前进”按钮浏览保存的历史状态时,浏览器会在window对象上触发一个popstate事件,与该事件相关联的事件对象有一个state属性,该属性包含传递给pushState()方法的状态对象的副本。

相关推荐