官术网_书友最值得收藏!

1.2.2 history.replaceState

1.基本用法

history.replaceState的用法與history.pushState非常相似,區別在于history.replaceState將修改當前的歷史記錄項而不是新建一個。其語法為:

當需要更新當前棧指針所指向的棧記錄,而不是增加歷史棧時,可使用history.replaceState方法,該方法不會使history.length發生變化。

同history.pushState方法類似,history.replaceState方法也可傳遞state到歷史棧的棧記錄中。

對于state對象,history.replaceState同history.pushState一樣使用結構化拷貝算法,如對象中不能設置函數:

2.歷史棧變化

history.replaceState不會改變歷史棧中記錄的數量,如圖1-3所示,當位于路徑/b時,調用history.replaceState({a:3},null,'/c')方法會更新當前棧的信息,棧記錄/b會被替換為/c,此時/b的記錄會丟失,棧的記錄數量不會發生變化。

圖1-3 history.replaceState更新歷史棧棧頂記錄

如果當前的棧指針指向棧中間的記錄,則此時調用history.replaceState方法,僅改變當前棧指針所指向的記錄,如圖1-4所示。

圖1-4 history.replaceState更新非棧頂記錄

/b的記錄被替換為/c的記錄,棧頂的/d記錄不受影響,且棧指針依然位于中間位置。

history.replaceState與history.pushState的主要不同是,history.replaceState會替換當前指針位置的歷史記錄,并不會移動指針,也不會入棧新內容,history.length不會發生變化。

主站蜘蛛池模板: 东台市| 南和县| 垣曲县| 和龙市| 赤城县| 卓资县| 徐水县| 通山县| 辽宁省| 满洲里市| 将乐县| 义乌市| 西平县| 黑龙江省| 綦江县| 平阳县| 北海市| 大埔区| 溧水县| 浠水县| 油尖旺区| 辉南县| 安乡县| 深州市| 九江市| 洪雅县| 策勒县| 武鸣县| 高雄县| 邢台县| 卢湾区| 哈尔滨市| 临湘市| 日照市| 池州市| 怀柔区| 湟源县| 林芝县| 彝良县| 扶绥县| 谷城县|