pushState和replaceState是一個HTML5的新接口,他們的作用非常大,可以做到改變網址卻不需要刷新頁面,這個特性後來用到了單頁面應用中比如:vue-router,react-router-dom裡面,咱們就先看看它的原理和使用案例吧。pushState說明
pushState方法接受三個參數,依次為:state:一個與指定網址相關的狀態對象,popstate事件觸發時,該對象會傳入回調函數。如果不需要這個對象,此處可以填null。title:新頁面的標題,但是所有瀏覽器目前都忽略這個值,因此這裡可以填null。url:新的網址,必須與當前頁面處在同一個域。瀏覽器的地址欄將顯示這個網址。最常用的方法:window.history.pushState(null,null,'download?id=1');完整使用:var oState= {title: '下載' };window.history.pushState(oState, '下載', 'download?id=1');特點:pushState()可以創建歷史,可以配合popstate事件,可以使用history.go(-1)返回到上一個頁面。比如:window.addEventListener('popstate', function(evt){var state = evt.state;document.title= state.title; }, false);replaceState說明
replaceState和pushState原理一樣使用也一樣:最常用的方法:window.history.replaceState(null,null,'download?id=1');完整使用:var oState= {title: '下載' };window.history.replaceState(oState, '下載', 'download?id=1');特點:replaceState不會加入到歷史記錄裡面,用history.go(-1)會跳過當前頁面相當於是history.go(-2)。
本文原創於程序思維:http://www.lucklnk.com/godaddy/details/aid/493474001