replaceState()vs pushState()

时间:2013-07-06 20:58:36

标签: javascript html5

我一直在阅读并寻找replaceState()&之间的优缺点。 pushState()。 另请阅读Mozilla的articleinteresting测试,但我仍然不清楚这些差异。

任何人都在关心他们的不同之处?

2 个答案:

答案 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历史记录的修改方式。