Wie lade ich Seiten mit JavaScript anstatt mit Redirect?

8

Das beste Beispiel für das, was ich versuche, ist das Navigationssystem von YouTube. Wenn Sie auf einen Link zu einem Video klicken, wird oben auf der Seite ein roter Balken angezeigt, der angibt, wie viel von der angeforderten Seite geladen wurde. Wenn die angeforderte Seite fertig geladen ist, ersetzt sie sofort den Inhalt der vorherigen Seite und das Video beginnt zu laden. Es gibt verschiedene Dinge, um dies so nahtlos wie möglich zu machen.

  • Die URL wird so geändert, dass sie der neuen Seite entspricht.
  • Keine Weiterleitung (Das ist schwer zu erklären).
  • Die neue Seite wird zum Verlauf hinzugefügt.
  • Die Back- und Forth-Navigation funktioniert nahtlos.

Ich habe die URL mit:

geändert %Vor%

Ich habe versucht, die angeforderte Seite mit:

zu laden %Vor%

Dies würde den Code der gesamten vorherigen Seite durch den neuen Seitencode ersetzen. Mehrere Probleme damit:

  • Die Navigation vor und zurück funktioniert mit der URL, aber ein Event-Handler muss dies erkennen und die richtige Seite laden. Ich habe das benutzt:

    %Vor%
  • Die Verwendung von $.load() kann (sollte nicht) neue Skript-Tags für Skripte laden, da Synchronous XMLHttpRequest on the main thread is deprecated

Was ich gerne tun könnte:

  • Laden Sie nahtlos eine Seite ohne Umleitung mit JQuery und AJAX
  • Diese neue Seite kann neue Skripte und PHP-Tags enthalten (PHP ist möglicherweise unmöglich, und ich muss AJAX verwenden, um dies zu replizieren).

Quellen:

Adressleiste mit neuen aktualisieren URL ohne Hash oder Neuladen der Seite

Laden Sie die HTML-Seite dynamisch in div mit jQuery

JS- oder Jquery-Browser-Schaltfläche "Zurück" -Klickdetektor

Synchrones XMLHttpRequest im Hauptthread ist veraltet

    
Damen 04.01.2016, 10:57
quelle

2 Antworten

2

Dieser folgende Beitrag könnte Ihnen helfen.

Neugierig auf die neue Art, wie YouTube Seiten lädt

Sie können prüfen, ob eine js-Bibliothek namens history.js Ihnen dabei helfen kann, das zu erreichen, was Sie brauchen.

>     
kaygee 04.01.2016 14:15
quelle
0

Die Bibliothek history.js erledigt die ganze harte Arbeit im Umgang mit der Geschichte und ich muss mich nur um die Navigation kümmern, was einfach war. Alles, was ich tun muss, ist, dass alle Skripte beim ersten Laden der Seite geladen werden (wenn der Benutzer zum ersten Mal auf die Seite kommt). Wenn sie dann "umgeleitet" werden, wird der Seitenkörper mit $("body").load("pageToBeLoaded.php",pageToBeLoaded()) durch die richtige Seite ersetzt. Die Funktion pageToBeLoaded() wird nach ihrer Fertigstellung aufgerufen und behandelt alle spaßigen Dinge für die neue Seite.

    
Damen 05.01.2016 06:15
quelle

Tags und Links