replaceState() vs pushState()
2022-08-30 05:32:09
replaceState()
将更改浏览器中的URL(即按下后退按钮不会带您回去)
pushState()
将更改URL,并将旧URL保留在浏览器历史记录中(即按下后退按钮将带您返回)
从您的链接
history.replaceState() 的操作与 history.pushState() 完全相同,只是 replaceState() 修改当前历史记录条目,而不是创建一个新的条目。
当您想要更新当前历史记录条目的状态对象或 URL 以响应某些用户操作时,replaceState() 特别有用。
如果您只想更新历史记录条目,请使用 否则使用 ,这将保留旧条目并创建一个新条目。它们相似,但都有不同的效果,因此这取决于您是否要替换或创建新的历史记录条目。replaceState()
pushState()
把它想象成我正在通过把一张牌放在另一张牌上(面朝上)来处理一副牌,你只能拿走一堆牌(即我发的最后一张牌)。假设我把一个心形杰克放在堆上。现在,如果我使用下一张卡,所以我把那张心形杰克拿下来,然后把下一张卡放上去。卡的数量是相同的,因为我们刚刚更换了顶部的卡。如果我用它来代替,我会把下一张牌放在心形杰克的顶部(所以现在两者都存在于一堆中,而且这一堆牌高了一张)。replaceState
pushState
将卡片与URL进行类比交换,这就是URL历史记录的修改方式。