history.go支持传入一个参数。vue
这个参数能够是一个整数(n),表示前进或者后退n步。若是这个整数过大或者太小,历史记录中没有这么多步就没有什么效果浏览器
这个参数也能够是一个字符串。匹配历史记录中第一个位置。若是没有匹配项就不会有什么效果服务器
故名思议,这两个方法模拟了浏览器的后退和前进按钮。url
表示历史记录的条数,若是是一个新窗口history.length=1code
它们都接受三个参数:对象
1. state:一个状态对象 2. title:一个标题,这个参数暂时尚未实际做用 3. url(可选):一个同源的url,若是没有传就默认当前url
修改location.hash、pushState、replaceState都会将该页面的一种新状态推动历史记录,地址栏也会改变,可是页面不会向服务器发送请求。事件
pushState、replaceState不会触发popState事件。
一、若是浏览器的前进,后退按钮改变了页面的状态就会触发popState事件。好比你前面经过pushState推入一条新状态,而后你点击后退按钮就会触发popState事件
二、修改hash也会触发popState资源
vueRouter提供的push和replace以及route-link都是利用了pushState和replaceState方法推送新状态的历史记录,因此不会触发页面刷新。
hash模式手动修改hash,好比在地址栏中修改hash就会触发vueRouter中定义好的popState从而更新页面。
当历史记录中有状态时前进后退也会触发vueRouter中定义好的popState从而更新页面。
而直接修改url地址或者刷新的话是不会触发popState,而且会去请求服务器资源。因此history模式下,刷新有时会致使404路由