dal tuo link
history.replaceState() funziona esattamente come history.pushState() salvo che replaceState() modifica la voce della cronologia corrente invece di crearne uno nuovo.
replaceState() è particolarmente utile quando si desidera aggiornare l'oggetto Stato o l'URL della voce storia attuale in risposta a qualche azione utente.
Se si desidera semplicemente vogliono aggiornare voce della cronologia, utilizzare replaceState()
altrimenti utilizzare pushState()
, che manterrà il vecchio ingresso e crearne uno nuovo. Sono simili ma hanno entrambi effetti diversi, quindi dipende se vuoi sostituire o creare nuove voci della cronologia.
Pensa a come sto distribuendo un mazzo di carte mettendo una carta sopra l'altra (a faccia in su) e puoi solo prendere la prima carta nel mazzo (cioè l'ultima carta che ho distribuito). Diciamo che ho messo un mazzo di cuori sul mucchio. Ora per la prossima carta se uso replaceState
, quindi prendo quel Jack of Hearts e metto su la prossima carta. Il numero di carte è lo stesso da quando abbiamo appena sostituito la prima carta. Se avessi usato lo pushState
, avrei messo la prossima carta in cima al Jack of Hearts (quindi ora esistono entrambi nella pila e la pila è una carta più in alto).
Scambia le carte in analogia con gli URL ed è così che viene modificata la cronologia degli URL.
http://blog.scoutapp.com/articles/2010/12/07/manipulating-browser-history-with-javascript-pushstate-replacestate –