Einfache Zuordnung zu window.location oder window.location.href sollte gut sein:
window.location = newUrl;
Ihre neue URL bewirkt jedoch, dass der Browser die neue Seite lädt, aber es hört sich so an, als ob Sie die URL ändern möchten, ohne die aktuelle Seite zu verlassen. Dazu haben Sie zwei Möglichkeiten:
Verwenden Sie den URL-Hash. Sie können zum Beispiel von gehen example.com zu example.com#foo ohne eine neue Seite zu laden. Sie können einfach einstellen window.location.hash um dies einfach zu machen. Dann sollten Sie sich HTML5 anhören hashchange Ereignis, das ausgelöst wird, wenn der Benutzer die Zurück-Schaltfläche drückt. Dies wird in älteren Versionen von IE nicht unterstützt, aber überprüfen Sie es jQuery-BBQwodurch dies in allen Browsern funktioniert.
Sie können den HTML5-Verlauf verwenden, um den Pfad zu ändern, ohne die Seite neu zu laden. Dadurch können Sie von wechseln example.com/foo zu example.com/bar. Die Verwendung ist einfach:
window.history.pushState("example.com/foo");
Wenn der Benutzer “Zurück” drückt, erhalten Sie die Fenster popstate Ereignis, das Sie sich leicht anhören können (jQuery):
Leider wird dies nur von sehr modernen Browsern wie Chrome, Safari und Firefox 4 Beta unterstützt.
Die .replace-Methode für Zeichenfolgen ändert nicht die Zeichenfolge, auf die sie angewendet wurde, sondern generiert eine neue Zeichenfolge. – der window.location.replace() Methode ist nicht die gleiche wie die String.prototype.replace() Methode, weil window.location ist kein String (es ist ein Objekt). window.location.replace() ersetzt die aktuelle URL durch eine neue und überschreibt dabei den Eintrag der alten URL in der Historie.
– Andi E
2. Oktober 2010 um 18:50 Uhr
Danke für die Korrektur, ich werde meine Antwort entsprechend aktualisieren.
– Kirsche
6. Oktober 2010 um 2:10 Uhr
Rückblickend ist dies bei weitem die beste Antwort. document.location.href hat nichts auf pushState
– büley
15. Februar 2011 um 1:21 Uhr
Wenn Sie nur den relativen Pfad aktualisieren möchten, können Sie dies auch tun