replaceState () vs pushState ()

Antworten:

155

replaceState()wird ändern Sie die URL im Browser (dh. die Zurück - Taste drücken , wird Sie nicht zurück nehmen)

pushState() ändert die URL und behält die alte im Browserverlauf bei (dh durch Drücken der Zurück-Taste gelangen Sie zurück)


quelle
55

Von Ihrem Link

history.replaceState () funktioniert genau wie history.pushState (), außer dass replaceState () den aktuellen Verlaufseintrag ändert, anstatt einen neuen zu erstellen.

replaceState () ist besonders nützlich, wenn Sie das Statusobjekt oder die URL des aktuellen Verlaufseintrags als Reaktion auf eine Benutzeraktion aktualisieren möchten.

Wenn Sie den Verlaufseintrag einfach aktualisieren möchten, verwenden Sie replaceState()anderweitig use pushState(), wodurch der alte Eintrag beibehalten und ein neuer erstellt wird. Sie sind ähnlich, haben jedoch unterschiedliche Auswirkungen. Dies hängt davon ab, ob Sie neue Verlaufseinträge ersetzen oder erstellen möchten.

Stellen Sie sich vor, ich verteile ein Kartenspiel, indem ich eine Karte übereinander lege (offen), und Sie können nur die oberste Karte auf den Stapel nehmen (dh die letzte Karte, die ich ausgeteilt habe). Nehmen wir an, ich lege einen Jack of Hearts auf den Stapel. Nun zur nächsten Karte, wenn ich sie benutze replaceState, also nehme ich den Jack of Hearts ab und lege die nächste Karte auf. Die Anzahl der Karten ist gleich, da wir gerade die oberste Karte ersetzt haben. Wenn ich pushStatestattdessen verwendet hätte, hätte ich die nächste Karte auf den Jack of Hearts gelegt (also existieren jetzt beide auf dem Stapel und der Stapel ist eine Karte höher).

Tauschen Sie die Karten in Analogie mit URLs aus und so wird der URL-Verlauf geändert.

TastaturP
quelle
1
"history.replaceState () funktioniert genau wie history.pushState (), außer dass replaceState () den aktuellen Verlaufseintrag ändert, anstatt einen neuen zu erstellen." Dieses Zitat habe ich hier gefunden. developer.mozilla.org/en-US/docs/Web/API/History_API . Können Sie erklären, was der globale Browserverlauf ist? Der Eintrag wird im globalen Browserverlauf erstellt.
Raghu DV
Was bedeutet "globaler Browserverlauf"? @ RaghuDV
Stevemao
@keyboardP Super erklärt. Vielen Dank.
michael.zech