Heim Web-Frontend H5-Tutorial Die neuen HTML5-Funktionen pushState, replaceState und der Unterschied zwischen den beiden _html5-Tutorial-Fähigkeiten

Die neuen HTML5-Funktionen pushState, replaceState und der Unterschied zwischen den beiden _html5-Tutorial-Fähigkeiten

May 16, 2016 pm 03:46 PM
history html5

Das Fensterobjekt im DOM ermöglicht den Zugriff auf den Browserverlauf über die window.history-Methode, sodass Sie im Zugriffsdatensatz des Benutzers vorwärts und rückwärts navigieren können.

Beginnend mit HTML5 können wir mit der Bearbeitung dieses Verlaufsstapels beginnen.

1. Verlauf

Verwenden Sie die Methoden back(), forward() und go(), um im Verlauf des Benutzers vorwärts zu gelangen Zurück

Vor und zurück

Zurück:


Code kopieren
Der Code lautet wie folgt:

window.history.back();

Diese Methode verhält sich so, als hätte der Benutzer auf die Zurück-Taste in der Browser-Symbolleiste geklickt.

Ähnlich kann auch die folgende Methode verwendet werden, um Benutzer-Weiterleitungsverhalten zu generieren:


Code kopieren
Der Code lautet wie folgt:

window.history.forward();

An eine bestimmte Position im Verlauf verschieben

Sie Sie können die Methode go() verwenden, um eine bestimmte Seite aus dem Sitzungsverlauf zu laden.

Eine Seite zurückgehen:


Kopieren Sie den Code
Der Code lautet wie folgt:

window.history.go(-1);

Eine Seite vorwärts:


Code kopieren
Der Code lautet wie folgt:

window.history.go(1)

Ähnlich, Sie können mehrere Seiten vor- oder zurückblättern.

Sie können die Gesamtzahl der Seiten im Verlaufsstapel auch ermitteln, indem Sie die Längeneigenschaft des Browserverlaufs überprüfen.


Code kopieren
Der Code lautet wie folgt:

var numberOfEntries = window.history .length;

Hinweis: IE unterstützt die Übergabe von URL-Parametern an die go()-Methode.

2. Verlaufselemente hinzufügen und ändern

Eingeführt seit Gecko2 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)

HTML5 führte die beiden Methoden History.pushState() und History.replaceState() ein, die das Hinzufügen und Ändern von Verlaufsentitäten ermöglichen. Gleichzeitig funktionieren diese Methoden mit dem window.onpostate-Ereignis.

Verwenden Sie die Methode „history.pushState()“, um den Referrer zu ändern. Diese Methode kann im http-Header verwendet werden, der für das xmlhttpRequest-Objekt erstellt wurde, nachdem der Status geändert wurde. Dieser Referrer ist beim Erstellen der XMLHttpRequest die URL des Dokuments.

pushState wird verwendet, um den Datensatz der aktuellen Seite zum Verlauf hinzuzufügen, während replaceState genauso verwendet wird wie pushState. Der einzige Unterschied besteht darin, dass es zum Ändern des Datensatzes der aktuellen Seite im Verlauf verwendet wird.

Beispiel

Angenommen, die Seite http://mozilla.org/foo.html führt JS aus


Kopieren Code
Der Code lautet wie folgt:

var stateObj = { foo: "bar" }; html ");

Diese Methode führt dazu, dass in der URL-Adressleiste http://mozilla.org/bar.html angezeigt wird, der Browser jedoch die Seite bar.html nicht lädt, selbst wenn diese Seite vorhanden ist.

Gehen wir nun erneut davon aus, dass der Nutzer zu http://google.com weitergeht und zurück klickt. Zu diesem Zeitpunkt lautet die URL-Adressleiste http://mozilla.org/bar.html und die Seite erhält das Popstate-Ereignis (Chrome). Dieses Statusobjekt enthält eine Kopie von stateObj. Diese Seite sieht aus wie foo.html.

Zu diesem Zeitpunkt klicken wir erneut auf „Zurück“, die URL wird zu „http://mozilla.org/foo.html“ und das Dokument erhält ein weiteres Popstate-Ereignis und ein Nullstatusobjekt. Diese Rückgabeaktion ändert den Inhalt des Dokuments nicht. (Versuchen Sie vielleicht nach einer Weile, Chrome zu laden.)

pushState-Methode

pushState() hat drei Parameter: Statusobjekt, Titel (wird jetzt ignoriert und nicht verarbeitet), URL (optional). Spezifische Details:

· Zustandsobjekt – Das Zustandsobjekt ist ein JavaScript-Objekt, das mit der neuen Verlaufsentität verknüpft ist, die durch die Methode pushState() erstellt wurde. Wird zum Speichern von Informationen über den Eintrag verwendet, den Sie in den Verlauf einfügen möchten. Das Statusobjekt kann eine beliebige JSON-Zeichenfolge sein. Da Firefox für den Zugriff auf das Statusobjekt die Festplatte des Benutzers verwendet, beträgt der maximale Speicherplatz dieses Objekts 640 KB. Wenn er größer als dieser Wert ist, löst die Methode pushState() eine Ausnahme aus. Wenn Sie wirklich mehr Speicherplatz benötigen, verwenden Sie lokalen Speicher.

· Titel – Firefox ignoriert diesen Parameter jetzt, obwohl er möglicherweise in Zukunft verwendet wird. Der sicherste Weg, es jetzt zu verwenden, besteht darin, eine leere Zeichenfolge zu übergeben, um zukünftige Änderungen zu verhindern. Oder Sie können einen kurzen Titel übergeben, um den Status darzustellen.

· URL – Dieser Parameter wird verwendet, um die URL der neuen Verlaufsentität zu übergeben. Beachten Sie, dass der Browser diese URL nach dem Aufruf der pushState()-Methode nicht lädt. Aber vielleicht wird es nach einer Weile versuchen, diese URL zu laden. Nachdem der Benutzer beispielsweise den Browser neu gestartet hat, ist die neue URL möglicherweise kein absoluter Pfad. Wenn es sich um einen relativen Pfad handelt, ist er relativ zur vorhandenen URL. Die neue URL muss sich in derselben Domäne wie die vorhandene URL befinden, andernfalls löst pushState() eine Ausnahme aus. Dieser Parameter ist optional. Wenn er leer ist, wird er auf die aktuelle URL des Dokuments gesetzt.

In gewissem Sinne ist der Aufruf der pushState()-Methode dem Festlegen von window.location = „#foo“ sehr ähnlich. Beide erstellen und aktivieren eine weitere Verlaufsentität, die mit dem aktuellen Dokument verknüpft ist, aber pushState(). )Es gibt auch einige Vorteile:

Die neue URL kann eine beliebige URL in derselben Domäne wie die aktuelle URL sein. Wenn Sie dagegen nur den Hash festlegen, bleibt window.location im selben Dokument.

Sie müssen die URL nicht ändern, wenn dies nicht erforderlich ist. Im Gegensatz dazu generiert die Einstellung window.location = "#foo"; nur eine neue Verlaufsentität. Wenn Ihr aktueller Hash nicht #foo ist

, können Sie Ihrer neuen Verlaufsentität beliebige Daten zuordnen. Bei Verwendung von Hash-basierten Methoden müssen alle relevanten Daten in einen kurzen String kodiert werden.

Beachten Sie, dass die Methode pushState() nicht dazu führt, dass die Hash-Änderungszeit auftritt, selbst wenn die alte und die neue URL nur unterschiedliche Hashes haben.

replaceState()-Methode

history.replaceState() wird ähnlich wie pushState() verwendet, außer dass replaceState() zum Ändern verwendet wird die aktuelle Verlaufsentität, anstatt eine neue zu erstellen. Diese Methode ist manchmal nützlich, wenn Sie ein Statusobjekt oder die aktuelle Verlaufsentität als Reaktion auf bestimmte Benutzeraktionen aktualisieren müssen. Sie können damit das Statusobjekt oder die URL der aktuellen Verlaufsentität aktualisieren.

Popstate-Ereignis

Wenn die Verlaufsentität geändert wird, tritt das Popstate-Ereignis auf. Wenn die Verlaufsentität durch die Methoden pushState und replaceState generiert wird, enthält das Statusattribut des Popstate-Ereignisses eine Kopie des Statusobjekts aus der Verlaufsentität

Einzelheiten finden Sie unter window.onpopstate

Aktuellen Status lesen

Vorhandenen Status lesen

Wenn die Seite geladen wird, verfügt sie möglicherweise über ein nicht leeres Statusobjekt. Dies kann passieren, wenn der Benutzer den Browser neu startet, nachdem die Seite ein Statusobjekt festgelegt hat (mithilfe von pushState oder replaceState). Wenn die Seite neu geladen wird, empfängt die Seite das Onload-Ereignis, es gibt jedoch kein Popstate-Ereignis. Wenn Sie jedoch die Eigenschaft „history.state“ lesen, erhalten Sie das Statusobjekt, nachdem das Popstate-Ereignis auftritt
var currentState = History.state;
Browser: Getestet und in Betrieb

HTML5-Browser

Chrome 8,9,10
Firefox 4
Safari 5
Opera 11
Safari iOS 4.3
HTML4-Browser

IE6,7,8,9
Firefox 3
Opera 10
Safari 4
Safari iOS vor Version 4.3

pushState und replaceState Difference

history.pushState(state, title, url)

-------------------- - ------------------------------------------------- - ---------

Fügen Sie die aktuelle URL und den aktuellen History.state zum Verlauf hinzu und ersetzen Sie die aktuelle durch den neuen Status und die neue URL. Die Seite wird dadurch nicht aktualisiert.

Status: Statusinformationen, die der URL entsprechen, zu der gesprungen werden soll.

titre : Pas besoin de transmettre

url : adresse URL vers laquelle accéder, ne peut pas traverser le domaine.

history.replaceState(état, titre, url)

-------------------------- -- ------------------------------------------------ --

Remplacez l'état et l'URL actuels par le nouveau. Cela n’entraînera pas l’actualisation de la page.

state : informations d'état correspondant à l'URL vers laquelle accéder.

titre : ne peut pas être transmis

url : adresse URL vers laquelle accéder, ne peut pas traverser le domaine.

------------------------------------------------------ ------ ------------------------------------

Il semble Il n'y a pas de différence entre les deux, mais en fait, la grande différence est que pushState ajoute des enregistrements d'historique, alors que replaceState ne le fait pas.
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles