


JavaScript wird nicht aktualisiert, um die Vorwärts- und Rückwärtsfunktionen des Browsers zu implementieren. Javascript-Fähigkeiten
Um Backbone zu verstehen, müssen Sie zuerst Spa verstehen. Um Spa zu verstehen, müssen Sie zunächst verstehen, wie Single-Page-Anwendungen die URL ändern können, ohne die Seite zu aktualisieren.
Im Vergleich zum Springen zu verschiedenen Seiten hat AJAX das Surferlebnis des Benutzers erheblich verbessert. Es ist sehr angenehm, den weißen Bildschirm zwischen dem Seitenwechsel nicht sehen zu müssen. Allerdings unterstützten viele frühe AJAX-Anwendungen die Vorwärts- und Rückwärtsfunktionen des Browsers nicht. Dies führte dazu, dass der Benutzer unabhängig davon, wo er auf der Website navigierte, nach der Aktualisierung sofort zur ursprünglichen Position zurückkehrte und der Benutzer die Funktionen des Browsers nicht verwenden konnte Vorwärts- und Rückwärts-Taste zum Wechseln des Browserverlaufs.
Das erste Problem lässt sich relativ einfach lösen. Verwenden Sie einfach Cookies oder localStorage, um den Status der Anwendung aufzuzeichnen, lesen Sie diesen Status beim Aktualisieren der Seite und senden Sie dann die entsprechende Ajax-Anfrage, um die Seite zu ändern. Aber das zweite Problem ist sehr problematisch. Lassen Sie uns zunächst über die Lösung moderner Browser sprechen.
HTML5-Lösung
Um zu verstehen, wie HTML5 vorwärts und rückwärts implementiert, müssen Sie zunächst das Verlaufsobjekt und das Standortobjekt verstehen.
Historienobjekt
Verlaufsobjekteigenschaften
1.length: Gibt die Anzahl der URLs in der Browser-Verlaufsliste zurück. Jedes Mal, wenn der Benutzer eine Seite im aktuellen Tab besucht, wird diese Zahl um 1 erhöht. Aus Datenschutzgründen ist der konkrete Inhalt der URL nicht sichtbar.
2.state: Objekt im Zusammenhang mit der aktuellen URL, das nur über pushState und replaceState hinzugefügt oder geändert werden kann. Wir können es verwenden, um Informationen im Zusammenhang mit der URL zu speichern.
History-Objekt-Methode
1.history.back()
Diese Methode hat keine Parameter. Wenn sie ausgelöst wird, kehrt sie zur zuvor durchsuchten Seite zurück, was dem Klicken auf die Zurück-Schaltfläche des Browsers entspricht.
2.history.forward()
Diese Methode hat keine Parameter. Wenn sie ausgelöst wird, kehrt sie zu der Seite zurück, die Sie durchsucht haben, bevor Sie zurückgehen, was dem Klicken auf die Vorwärtsschaltfläche des Browsers entspricht.
3.history.go(number)
Diese Methode akzeptiert einen ganzzahligen Variablenparameter. „history.go(-1)“ entspricht dem Zurückblättern um eine Seite, „history.go(1)“ entspricht dem Vorblättern um eine Seite und „history.go(0)“ aktualisiert die aktuelle Seite.
4.history.pushState(state, title, url)
Der Schlüssel zum Ändern der URL ohne Aktualisierung der Seite ist folgender: Diese Methode ändert die location.href der aktuellen Seite und ändert das aktuelle Objekt „history.state“. Nach der Ausführung wird „history.length“ um 1 erhöht. Diese Methode akzeptiert drei Parameter:
1.state: Objekt im Zusammenhang mit der aktuellen URL.
2.title: Der Seitentitel, aber alle Browser ignorieren ihn. Um den Titel zu ändern, müssen Sie weiterhin document.title verwenden.
3.url: Eine URL in derselben Domäne wie die aktuelle Seite, location.href wird zu diesem Wert.
5.history.replaceState(state, title, url)
Diese Methode ist die gleiche wie oben, ändert jedoch nicht die Datei „history.length“, sondern nur „history.state“ und „location.href“.
Beachten Sie, dass der dritte Parameter von pushState und replaceState nicht domänenübergreifend sein kann und das Popstate-Ereignis und das Onhashchange-Ereignis des Browsers nicht auslöst (getestet unter chrome33).
Standortobjekt
Zusätzlich zum Klicken auf die Vor-/Zurück-Schaltfläche und zum Verlauf des Ereignisses können Sie die URL auch über die Standortmethode ändern und die Standorteigenschaften ändern:
Attribute des Standortobjekts (Lesen und Schreiben):
1.Host: Portnummer des Domänennamens
2.Hostname: Domänenname
3.Port: Portnummer
4.Protokoll: Protokoll
5.href: vollständiger Pfad
6. Herkunft: Port des Protokolldomänennamens
7.Hash: URL(Hash), beginnend mit einem Nummernzeichen (#)
8.Pfadname: Dokumentpfad-Dokumentname
9.Suche:Der Inhalt nach (?)
Sie können den Zweck der Nichtaktualisierung erreichen, indem Sie location.href oder location.hash ändern.
Methoden des Standortobjekts:
1. Zuweisen: Ändern Sie den Wert der URL und fügen Sie die aktuelle URL zum Verlauf hinzu. Die Länge von „history.length“ wird um 1 erhöht. location.asig(‘#’ x) ändert die URL, aktualisiert aber nicht die Seite.
2. Neu laden: Aktualisieren Sie die Seite.
3. Ersetzen: Ändern Sie den Wert der URL, aber History.length bleibt unverändert. Die Verwendungsmethode ist dieselbe wie bei der Zuweisung.
Popstate-Event
Wenn sich die URL ändert, klickt der Benutzer beispielsweise auf die Schaltfläche „Vorwärts/Zurück“, „history.go(n)“ (n ist nicht gleich 0), „location.hash = x“ (x ist nicht gleich dem aktuellen Standort). Hash) wird dieses Ereignis auslösen. Sie können damit URLs überwachen, um verschiedene Funktionen zu implementieren.
window.onpopstate = function(){
//etwas tun
}
événement onhashchange
La modification de la valeur de hachage déclenchera l'événement popstate, mais le déclenchement de l'événement popstate ne déclenchera pas nécessairement l'événement onhashchange. Testé :
1.hash change mais location.pathname reste inchangé déclenchera l'événement onhashchange, tel que history.pushState(", ", '#abc');
2. Il ne se déclenchera pas si le hachage et l'emplacement.pathname sont modifiés ensemble, comme history.pushState(", ", 'a#abc');
Comment écrire dans les anciens navigateurs
Les anciens navigateurs ne prennent pas non plus en charge pushState et replaceState, donc surveiller les modifications d'URL via popstate (en fait, cette méthode n'est pas prise en charge) n'est pas réalisable. Ensuite, vous ne pouvez obtenir aucune actualisation en modifiant le contenu après l'url#, mais ils ne prennent pas en charge onhashchange, ils sont donc indifférents aux changements dans l'url (sauf que la page défilera jusqu'à la position correspondant à l'identifiant de la page). Ensuite, vous ne pouvez recourir qu'à la grande astuce : interroger, définir un setInterval pour surveiller la valeur de l'url. Comme ça :
var prevHash = window.location.hash
var rappel = fonction(){...}
window.setInterval(function() {
Si (window.location.hash != prevHash) {
prevHash = window.location.hash
rappel(prevHash);
}
}, 100);
Bien sûr, écrire de cette façon est très frustrant. Si vous n'envisagez pas de cliquer sur la balise a avec un identifiant sur la page pour modifier le hachage, vous pouvez utiliser des modèles de conception pour implémenter avec élégance les URL de surveillance. Par exemple, dans le modèle d'observateur classique, une classe est spécifiquement utilisée pour implémenter la fonction de modification du hachage, puis toutes les classes (observateurs) qui souhaitent surveiller les modifications d'URL s'abonnent à cette classe (observée).
//Changer la classe de l'url
fonction UrlChanger() {
var _this = ceci;
This.observers = [];
//Ajouter un observateur
This.addObserver = function(obj) {...}
//Supprimer l'observateur
This.deleteObserver = function(obj) {...}
//Avertir les observateurs
This._notifyObservers = function() {
var longueur = _this.observers.length;
console.log(longueur)
pour(var je = 0; je < longueur; je ) {
_this.observers[i].update();
>
>
//Changer l'url
This.changeUrl = fonction (hachage) {
window.location.hash = hash;
_this._notifyObservers();
>
>
//Cours d'écoute
fonction oneOfObservers() {
var _this = ceci;
This.update = function() {...}
>
//Mise en œuvre
var o1 = nouveau UrlChanger();
var o2 = new oneOfObservers();
o1.addObserver(o2);
o1.changeUrl('fun/arg1/arg2/');
//o2 a fait quelque chose...

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Apache Server ist eine leistungsstarke Webserver -Software, die als Brücke zwischen Browsern und Website -Servern fungiert. 1. Es werden HTTP -Anforderungen behandelt und Webseiteninhalte basierend auf Anfragen zurückgegeben. 2. Modulares Design ermöglicht erweiterte Funktionen, wie die Unterstützung für die SSL -Verschlüsselung und dynamische Webseiten. 3. Konfigurationsdateien (z. B. virtuelle Host-Konfigurationen) müssen sorgfältig eingestellt werden, um Sicherheitsanfälligkeiten zu vermeiden und Leistungsparameter wie Thread-Zähler und Zeitüberschreitungszeit zu optimieren, um leistungsstarke und sichere Webanwendungen zu erstellen.

Das Installations-, Konfigurations- und Optimierungshandbuch für das HDFS -Dateisystem unter CentOS -System In diesem Artikel wird die Installation, Konfiguration und Optimierung von Hadoop Distributed Dateisystem (HDFS) auf CentOS -System geleitet. HDFS -Installation und Konfiguration Java -Umgebung Installation: Stellen Sie zunächst sicher, dass die entsprechende Java -Umgebung installiert ist. Bearbeiten/etc/Profildatei, Folgendes hinzufügen und /usr/lib/java-1.8.0/jdk1.8.0_144 mit Ihrem tatsächlichen Java-Installationspfad: exportjava_home =/usr/lib/java-1.8.0/jdk1.8.0_144144141441444 = $ java-1.8.0/Jdk1.8.0_144444 = $ Java-1. Java-1 $ Java-1.8.8.0_14444, ersetzen

Bei der Entwicklung von Websites mit CraftCMS stoßen Sie häufig mit Ressourcendateiproblemen, insbesondere wenn Sie häufig CSS und JavaScript -Dateien aktualisieren, alte Versionen von Dateien möglicherweise weiterhin vom Browser zwischengespeichert. Dieses Problem wirkt sich nicht nur auf die Benutzererfahrung aus, sondern erhöht auch die Schwierigkeit der Entwicklung und des Debuggens. Kürzlich habe ich in meinem Projekt ähnliche Probleme gestoßen, und nach einigen Erkundungen fand ich das Plugin Wiejeben/Craft-Laravel-Mix, das mein Caching-Problem perfekt löste.

Die Überwachung und Fehlerbehebung von Nginx-Leistungen werden hauptsächlich in den folgenden Schritten durchgeführt: 1. Verwenden Sie Nginx-V, um Versionsinformationen anzuzeigen und das Modul von stub_status zu aktivieren, um die Anzahl der aktiven Verbindungen, Anforderungen und Cache-Trefferzahlen zu überwachen. 2. Verwenden Sie den Top -Befehl, um den Aufbau von Systemressourcen, Iostat und VMSTAT -Monitor -Disk -I/A bzw. Speicherverbrauch zu überwachen. 3.. Verwenden Sie TCPDump, um Pakete zu erfassen, um den Netzwerkverkehr zu analysieren und Probleme mit der Netzwerkverbindung zu beheben. 4. Konfigurieren Sie die Anzahl der Arbeitsprozesse ordnungsgemäß, um unzureichende gleichzeitige Verarbeitungsfunktionen oder übermäßige Prozesskontextschaltaufwand zu vermeiden. 5. Konfigurieren Sie den Nginx -Cache korrekt, um unsachgemäße Einstellungen für die Größengröße zu vermeiden. 6. Durch Analyse von Nginx -Protokollen, z. B. die Verwendung von awk- und grep -Befehlen oder Elch

Das Konfigurieren eines HTTPS -Servers auf einem Debian -System umfasst mehrere Schritte, einschließlich der Installation der erforderlichen Software, der Generierung eines SSL -Zertifikats und der Konfiguration eines Webservers (z. B. Apache oder NGINX) für die Verwendung eines SSL -Zertifikats. Hier ist eine grundlegende Anleitung unter der Annahme, dass Sie einen Apacheweb -Server verwenden. 1. Installieren Sie zuerst die erforderliche Software, stellen Sie sicher, dass Ihr System auf dem neuesten Stand ist, und installieren Sie Apache und OpenSSL: sudoaptupdatesudoaptupgradesudoaptinsta

Es gibt viele Möglichkeiten, den Status von HDFs (Hadoop Distributed Dateisystem) auf CentOS -Systemen zu überwachen. In diesem Artikel werden mehrere häufig verwendete Methoden eingeführt, mit denen Sie die am besten geeignete Lösung auswählen können. 1. Verwenden Sie Hadoops eigenes Webui, Hadoops eigene Weboberfläche, um die Überwachungsfunktion der Cluster -Status zu ermöglichen. Schritte: Stellen Sie sicher, dass der Hadoop -Cluster in Betrieb ist. Greifen Sie in Ihrem Browser auf das Webui zu: Geben Sie http: //: 50070 (Hadoop2.x) oder http: //: 9870 (Hadoop3.x) ein. Der Standard -Benutzername und das Passwort sind normalerweise HDFS/HDFs. 2. Die Überwachung des Befehlszeilenwerkzeugs Hadoop bietet eine Reihe von Befehlszeilen -Tools, um die Überwachung zu erleichtern

In diesem Artikel werden die Konstruktions- und Konfigurationsmethoden von Nginx eingeführt. 1. Installieren Sie Nginx: Verwenden Sie Sudoyumininstallnginx auf CentOS, verwenden Sie Sudoapt-Getinstallnginx auf Ubuntu und beginnen Sie mit dem SudosystemCTLStartNginx nach der Installation. 2. Grundlegende Konfiguration: Ändern Sie die Datei /etc/nginx/nginx.conf, ändern Sie hauptsächlich die Anweisungen zum Hören (Port) und Root (Site Root Directory) im Serverblock und verwenden Sie nach der Änderung sudosystemctlrestartNginx, um neu zu starten und wirksam zu werden. 3.. Virtuelle Hostkonfiguration: In nginx.co

Um den Thread -Status im Tomcat -Protokoll anzuzeigen, können Sie die folgenden Methoden verwenden: TomcatmanagerWEB -Schnittstelle: Geben Sie die Verwaltungsadresse von Tomcat (normalerweise http: // localhost: 8080/Manager) in den Browser -Browser an, und Sie können den Status des Thread -Pools nach der Logging in. Tomcat's Thread Pool. Wählen Sie in JConsole
