2013-07-06 10 views
59

Ho letto e cercato vantaggi/svantaggi tra replaceState() & pushState(). Leggere anche il numero article di Mozilla e questo test interesting ma non mi sono ancora chiare le differenze.replaceState() vs pushState()

Qualcuno si preoccupa di spiegare in cosa differiscono?

+0

http://blog.scoutapp.com/articles/2010/12/07/manipulating-browser-history-with-javascript-pushstate-replacestate –

risposta

90

replaceState() volontà cambiamento l'URL nel browser (es. Premendo il pulsante Indietro non si torna)

pushState() cambierà l'URL, e mantenere quello vecchio nella cronologia del browser (es. premendo il pulsante Indietro si torna indietro)

30

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.

+5

Perché il downvote? – keyboardP

+0

"history.replaceState() funziona esattamente come history.pushState() eccetto che replaceState() modifica la voce della cronologia corrente invece di crearne una nuova." questa citazione l'ho trovata qui https://developer.mozilla.org/en-US/docs/Web/API/History_API. puoi spiegare cos'è la cronologia globale del browser. dice che la voce viene creata nella cronologia globale del browser. –

+0

Che cosa significa "cronologia browser globale"? @RaghuDV – stevemao

Problemi correlati