replaceState()vs pushState()

我一直在阅读和searchreplaceState()pushState()之间的优缺点。 另请阅读Mozilla的文章 ,这个有趣的testing,但仍然不清楚的差异。

任何一个人都在乎他们有什么不同?

replaceState()更改浏览器中的URL(即按下后退button不会退回)

pushState()将改变URL,并保留旧的浏览器历史logging(即按下后退button将带你回来)

从你的链接

history.replaceState()的运行方式与history.pushState()完全相同,只是replaceState()修改了当前的历史logging,而不是创build一个新的历史logging。

当您想要更新当前历史logging条目的状态对象或URL以响应某些用户操作时,replaceState()特别有用。

如果你只是想更新历史logging,使用replaceState()否则使用pushState() ,这将保留旧的条目,并创build一个新的。 他们是相似的,但都有不同的效果,所以这取决于你是否要更换或创build新的历史logging。

想想,就像我把一张牌放在另一张牌的上面(正面朝上)一样,你只能拿到一张牌中的顶牌(即我发牌的最后一张牌)。 比方说,我把一堆杰克放在一堆。 现在下一张卡,如果我使用replaceState ,所以我把那个杰克的心closures,把下一张卡。 因为我们刚刚更换了顶牌,所以牌的数量是一样的。 如果我使用了pushState ,我会把下一张牌放在Jack of Hearts的顶部(所以现在都存在于堆中,堆中的牌就高出一张)。

用url来换取卡片,这就是URL历史logging被修改的方式。