我一直在阅读并寻找replaceState()
&之间的优缺点。 pushState()
。
另请阅读Mozilla的article和interesting测试,但我仍然不清楚这些差异。
任何人都在关心他们的不同之处?
答案 0 :(得分:122)
replaceState()
将更改浏览器中的网址(即按下后退按钮不会将您带回来)
pushState()
会更改网址,并将旧网址保留在浏览器历史记录中(即按后退按钮会将您带回来)
答案 1 :(得分:43)
从您的链接
history.replaceState()的运行方式与history.pushState()完全相同 除了replaceState()改为修改当前的历史条目 创建一个新的。
当你想要更新时,replaceState()特别有用 响应某些状态的当前历史条目的状态对象或URL 用户行动。
如果您只想更新历史记录条目,请使用replaceState()
,否则请使用pushState()
,这将保留旧条目并创建一个新条目。它们相似,但两者都有不同的效果,因此取决于您是否要替换或创建新的历史记录条目。
把它想象成我将一张牌放在另一张牌面上(面朝上),然后你只能拿出一堆牌中的顶牌(即我发出的最后一张牌)。假设我把一颗Jack of Hearts放在一堆。如果我使用replaceState
,现在换下一张卡,所以我取下Jack of Hearts并放下一张卡。卡片的数量是相同的,因为我们刚刚更换了顶卡。如果我使用pushState
代替,我会将下一张牌放在Jack of Hearts的顶部(所以现在两者都存在于堆中,而且堆积更高一张)。
与URL类似地交换卡片,这就是URL历史记录的修改方式。