HTML5歷史管理狀態機制

小魚er發表於2019-02-16

前言:想要不重新整理頁面同時改變url 可以用HTML5 window物件的 hashChange 事件。同時介紹兩個相關的api 和 1個事件。

兩個API:
1.
history.pushState({name:`blog`},“,`blog.html`);此api會在history歷史狀態棧中新增一條記錄。‘前進’ ‘後退’按鈕可使用,並觸發popstate事件。
接受3個引數:
第一個:詳盡的狀態資訊。提供給popstate 事件的 事件物件的state屬性(event.state );
第二個:新狀態的標題,目前沒有瀏覽器實現,可以傳空字串
第三個:相對url。(如果傳入的地址是絕對地址,要求不能跨域,否則瀏覽器報錯)

2.
與之相反的是另外一個api
history.repalceState({name:`blog`},“,`blog.html`);引數同此pushState 一樣,唯一的區別是api不會在history歷史狀態棧中新增一條記錄,只會重新當前狀態。

一個事件
window 物件的 popstate事件,在按下‘前進’ ‘後退’按鈕並觸發。

小貼士:
在用pushState 創造‘假’url時,請確保 Web伺服器上有一個真實存在的url與之對應。 否則重新整理頁面時會報 404錯誤。

相關文章