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

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方法,則需注意此時棧記錄的數量依然會改變。

主站蜘蛛池模板: 华宁县| 景洪市| 太保市| 吴川市| 东兰县| 普定县| 绿春县| 九龙坡区| 泽库县| 休宁县| 舟山市| 图木舒克市| 铅山县| 卢湾区| 邢台县| 蓬溪县| 中牟县| 天祝| 田东县| 新竹市| 巴林左旗| 霍林郭勒市| 府谷县| 嵊州市| 修文县| 黄骅市| 嘉定区| 怀柔区| 富裕县| 武鸣县| 竹北市| 新宾| 嫩江县| 周宁县| 会昌县| 张家港市| 淮阳县| 五华县| 汉川市| 厦门市| 泰州市|