墨鱼文知乎看到这么个问题,这个API好像很强大,不得不说张新旭真的很强大。API介绍先看看API的使用方法:history.pushState(state,title,url):在浏览器历史记录最前面添加一条记录,不刷新。state(any)需要保存的数据,这个数据在popstate事件触发时保存在event.state上。title(string):Firefox目前忽略这个参数,尽管将来可能会用到。如果将来改变这种做法,发送空白字符串应该仍然是安全的。或者,您可以发送一个简短的标题,描述您想要达到的状态。至今没有地方保存这个标题,想必是对状态的描述吧?url(string)需要更改的url地址。ps:pushState至少需要两个参数。popstate:浏览器点击前进和后退时触发的事件。event.state可以获取当前url下设置的state。另外pushState中设置的state不一定要在popstate事件中获取,直接获取history.state也可以。补充内容pjaxpjax,使用ajax和pushState让SPA与多页应用体验保持一致。github项目解决了现代路由框架的H5模式。路由器的无刷新跳转也是使用这个api完成的。另外,由于url的变化,用户复制分享时,会因为没有定义路由而报错,需要服务器做重定向处理。参考资料:张新旭:ajax与HTML5历史pushState/replaceState实例mdn文档
