Wie ändere ich die URL im Browser, ohne von der Seite zu navigieren?

8

Ich schreibe gerade eine komplexe AJAX-Anwendung und die gesamte Website hat saubere URLs. Im Moment erstellt PHP das grundlegende Layout für jede Seite, aber ich möchte nicht von jeder Seite weg navigieren müssen, wenn der Benutzer auf einen Link klickt, und ich möchte keinen Hash in der URL haben, weil er 'gewonnen hat'. t passen mit dem Rest der Website. Ich weiß, dass dies Lasten früher auf der Website aufgetaucht ist und es scheint ziemlich häufig gefragt, aber ich frage mich, ob es eine nette HTML5 Weg erschien nur um die URL in der Adressleiste zu ändern, auch wenn es technisch auf dem gleichen bleibt Seite.

    
Thomas Denney 19.12.2011, 11:27
quelle

2 Antworten

34

Sie können es mit history.pushState machen, aber nur in Browsern, die dies unterstützen. Probieren Sie die folgende Zeile in der JavaScript-Konsole Ihres Browsers aus.

%Vor%

Mehr dazu in Die Methode pushState () (Mozilla Developer)

Ähnliche Frage Wie ändere ich mit JavaScript die URL im Browser, ohne die neue Seite zu laden?

    
Tilman Potthof 19.12.2011, 11:39
quelle
3

Wie andere schon gesagt haben, ist HTML5's history.pushstate der richtige Weg. Versuchen Sie, ein Repo auf Github zu durchsuchen, um es in Aktion zu sehen ( Ссылка ).

Trouble ist die einzige Version von IE, die history.pushstate unterstützt, ist IE10, was irgendwie saugt.

Viele Websites verwenden Hashbang #! URLs wie Twitter (z.B. Ссылка ). Der Hashbang ist ein URL-Muster, auf das sich Suchmaschinen einigen, damit sie eine stark von Ajax betriebene Website durchsuchen und indizieren können (mehr Informationen finden Sie hier Ссылка ), damit Sie diesen Weg gehen können.

Der einzige andere Ansatz besteht in der Verwendung von history.pushstate für Browser, die diesen Browser unterstützen, und bei nicht unterstützenden Browsern auf ganzseitige Aktualisierungen.

    
Sunday Ironfoot 19.12.2011 12:08
quelle

Tags und Links