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路由