- 深入理解React Router:從原理到實踐
- 李楊韜
- 616字
- 2021-04-16 16:10:35
1.2.3 通過相對路徑添加和修改瀏覽器記錄
history.pushState或history.replaceState,除支持絕對路徑導航外,還支持相對路徑導航,如:

熟悉Node.js的讀者,可參考url.resolve相對路徑的解決規則。對于相對路徑導航,其遵循以下規則。
如果路徑以“/”開頭,則會替換掉整個路徑。
如果路徑不以“/”開頭,則會得到相對當前URL地址的路徑(在瀏覽器無base元素存在的情況下),根據路徑解決規則會替換URL地址中的最后一級目錄,即最后一個“/”分隔符后面的路徑部分,如:

注意,如果當前路徑的最后一個字符為“/”,則可認為“/”后緊接空字符串,執行相對路徑導航會替換空字符串部分。

如果路徑中含有“.”“..”,則表示當前路徑及上一級路徑。


對于不帶具體路徑名的操作,可認為其設置最后一級路徑為空字符串。

對于不帶“.”的路徑,如pushState(null,null,'four'),其默認為pushState(null,null,'./four')。
同時,如果URL最后一個字符為“/”,最后一級路徑為空字符串,并且當調用window.history.pushState(null,null,'.')把當前路徑也設置為空字符串時,由于最后一級路徑都為空字符串,URL將不發生任何變化。
對于“..”操作符,其表明回到上一級路徑。

同樣,如果“..”不帶具體的路徑名,則根據路徑解決規則將認為其設置上一級路徑為空字符串。

或者

當URL最后一個字符為“/”,最后一級路徑為空字符串時,也遵循同樣的規律:

如果路徑以“?”或“#”作為跳轉URL的第一個字符,則瀏覽器會基于當前的路徑地址進行跳轉,并會設置對應的參數。
search情況:

hash情況,在鏈接后面拼接:

注意,在僅調用history.pushState改變search的值時,hash的值會被清理:

如果調用history.pushState方法,則需注意此時棧記錄的數量依然會改變。

- Java多線程編程實戰指南:設計模式篇(第2版)
- 國際大學生程序設計競賽中山大學內部選拔真題解(二)
- 小創客玩轉圖形化編程
- Unity Virtual Reality Projects
- Visual Basic程序設計教程
- Visual Basic程序設計實驗指導(第4版)
- ASP.NET程序設計教程
- ANSYS Fluent 二次開發指南
- 大數據分析與應用實戰:統計機器學習之數據導向編程
- Java面向對象程序設計
- 微服務從小白到專家:Spring Cloud和Kubernetes實戰
- Creating Data Stories with Tableau Public
- Raspberry Pi Robotic Blueprints
- 區塊鏈項目開發指南
- 軟件體系結構