Heim 类库下载 PHP类库 Verwenden Sie Methoden wie pushState, popState und location.hash, um selbst eine kleine Route zu implementieren

Verwenden Sie Methoden wie pushState, popState und location.hash, um selbst eine kleine Route zu implementieren

Oct 31, 2016 pm 02:00 PM

In diesem Artikel werden hauptsächlich die vom Verlauf in HTML5 bereitgestellten PushState- und ReplacementStateAPIs aufgezeichnet. Implementieren Sie schließlich selbst ein kleines Routing über diese APIs.

Informationen zur von window.history bereitgestellten API finden Sie in der Mozilla-Dokumentation.

Die von History bereitgestellten APIs pushState und replaceState stellen Methoden zum Betreiben des Browser-Verlaufsstapels bereit.

Die pushState:

history.pushState(data, null, '#/page=1');
    
    pushState接收3个参数,第一个参数为一个obj,表示浏览器
    
    第二个参数是document.title的值,一般设定为`null`
    
    第三个参数string,用以改变 当前url
Nach dem Login kopieren

pushState-Methode verschiebt neue Verlaufsdatensätze in den Browser-Verlaufsstapel, während die URL geändert wird.

Der Parameter, der die URL empfängt, ist vom Typ String und wird zum Ändern der URL der aktuellen Adressleiste verwendet. Zu beachten ist, dass dieser Parameter nicht mit domänenübergreifend identisch sein kann, d. h. Das Protokoll, der Domänenname und der Port müssen identisch sein. Wenn es sich um eine domänenübergreifende Verbindung handelt, wird Folgendes angezeigt:

Uncaught DOMException: Failed to execute 'pushState' on 'History': A history state object with URL 'http://www.baidu.com/' cannot be created in a document with origin 'http://commanderXL.com' and URL
Nach dem Login kopieren

Beispiel:

打开www.baidu.com

    history.pushState(null, null, '?page=1')    //地址栏变成 www.baidu.com/?page=1
    
    history.pushState(null, null, '#page=2');    //地址栏变成 www.baidu.com/#page=2
Nach dem Login kopieren

wobei replaceState:

history.replaceState(null, null, '#page=2');
Nach dem Login kopieren

replaceState empfängt den gleichen Parameter pushState, aber den endgültigen Der Effekt ist: Die URL der Adressleiste ändert sich entsprechend den empfangenen Parametern, der Browser fügt jedoch den Browserverlauf nicht zum hinzu aktuellen Browserverlaufsstapel, ersetzt jedoch den aktuellen Browserverlauf.

Obwohl die URL über pushState und replaceState geändert werden kann, wird dadurch kein aktives Neuladen des Browsers ausgelöst.

Das Fensterobjekt stellt auch die Popstate-Methode bereit:

window.addEventListener('popstate', function() {
        
    });
Nach dem Login kopieren

Diese Methode wird verwendet, um darauf zu warten, dass der Browser zwischen verschiedenen historischen Datensätzen wechselt und entsprechende Ereignisse auslöst.

Es gibt auch Go- und Back-Methoden für das vom Browser bereitgestellte Verlaufsobjekt, um zu simulieren, dass der Benutzer auf die Vor- und Zurück-Schaltflächen des Browsers klickt. Wenn in einer bestimmten Webanwendung beispielsweise auf das Tag geklickt wird, erfolgt ein Seitensprung. Zu diesem Zeitpunkt kehrt die Seite nach dem Aufruf der Methode „history.back()“ zurück und die Seite wird gleichzeitig aktualisiert. Zu diesem Zeitpunkt kann window.onpopstate dieses Ereignis nicht überwachen. Wenn die URL jedoch über pushState oder replaceState ohne Browseraktualisierung geändert wird, verwenden Sie History.back() oder History.go(), damit das Popstate-Ereignis ausgelöst wird.

PS: Fügen Sie ?page=1 über pushState zur URL hinzu, um den Suchinhalt über location.search abzurufen. Wenn Sie jedoch die URL über location.search ändern, wird dadurch aktiv ein Neuladen des Browsers ausgelöst. Diese Funktion kann mit dem folgenden Inhalt zum Hashing verglichen werden.

Da wir nun ein allgemeines Verständnis der API haben, wo können diese Methoden angewendet werden? Ein häufiges Szenario besteht darin, dass in einer Single-Page-Anwendung das Front-End-Routing-Design über diese APIs abgeschlossen wird. PushState und replaceState können zum Ändern der URL verwendet werden, ohne den Browser zu aktualisieren, und eine Reihe von Prozessen können durch Überwachung des Browsers abgeschlossen werden Geschichte durch Popstate.

Die allgemeine Idee besteht darin, Routing-Informationen über hinzuzufügen, dann das Standardverhalten des abzufangen und es mit den registrierten Routing-Informationen abzugleichen. Wenn der Abgleich erfolgreich ist, wird die entsprechende Handle-Methode aufgerufen.

Allerdings sind die Methoden pushState und replaceState nicht sehr kompatibel mit niedrigeren Versionen von IE-Browsern. Daher können Sie ein Downgrade durchführen und Hash für das Routing-Design verwenden.

Hash? Bitte stups mich an.

Sie können das erste # (Fragment) und den folgenden Inhalt auf der URL über location.hash abrufen. Gleichzeitig kann der Inhalt über location.hash neu geschrieben werden, ohne dass der Browser aktiv neu geladen werden muss. Sind einige Funktionen mit pushState und replaceState identisch? Um mit Browsern niedrigerer Versionen kompatibel zu sein, kann das Routing-Design daher durch Überwachung von # Änderungen durchgeführt werden.

Wie überwacht man also? Eine der groberen Methoden ist die Umfrage.

H5 bietet jedoch auch eine API: Hashchange. Es kann die obige Abfragemethode direkt ersetzen, um Änderungen in # zu überwachen.

Dieses kleine Routing-Design finden Sie auf meinem Github.

Um es kurz zusammenzufassen:

Das Obige stellt hauptsächlich einige APIs vor, die durch die Geschichte und das damit verbundene Wissen bereitgestellt werden Hash. Normalerweise kann es in SPA verwendet werden, indem es Hash für das Routing-Design verwendet. Im Vergleich zu Seitensprüngen:

Die Seite muss nur einmal geladen werden. Ein späterer Seitenwechsel kann Daten über Ajax anfordern. Das Seitenerlebnis ist flüssiger;

kann den lokalen Cache verwenden, um das Seitenerlebnis zu optimieren. Der Wechsel zwischen verschiedenen Seiten ist reibungsloser;

kann bei Bedarf geladen werden...

und bietet weitere praktische Vorteile.

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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
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)