Soll ich window.navigate oder document.location in JavaScript verwenden?

177

Was ist die bevorzugte Methode, um den Speicherort der aktuellen Webseite mithilfe von JavaScript zu ändern? Ich habe gesehen, dass sowohl window.navigate als auch document.location verwendet wurden. Gibt es Unterschiede im Verhalten? Gibt es Unterschiede bei den Browser-Implementierungen?

dthrasher
quelle

Antworten:

219
window.location.href = 'URL';

ist die Standardimplementierung zum Ändern der Position des aktuellen Fensters.

James Skidmore
quelle
22
Haben Sie einen Verweis, der angibt, dass window.location.href die Standardimplementierung ist? Und gilt dieser Standard für alle Browser gleich gut? Sie scheinen auf jeden Fall sachkundig zu sein, und mehr als 15 Stimmen (plus akzeptierte Antwort) tragen dazu bei, die Autorität zu verbessern, obwohl ich denke, dass es besser wäre, die Dokumentation der Browser-Entwicklungsteams zu sehen, um die Behauptung zu stützen.
Goyuix
6
@Goyuix, es ist wahrscheinlich genauer zu sagen, dass dies window.location.hrefdie vollständige Implementierung ist, aber window.locationdas Gleiche erreicht. Siehe docs.sun.com/source/816-6408-10/location.htm : "Wenn Sie der locationEigenschaft eines Objekts eine Zeichenfolge zuweisen , erstellt JavaScript ein locationObjekt und weist diese Zeichenfolge seiner hrefEigenschaft zu."
James Skidmore
3
Sieht so aus, als hätten diese Leute entschieden, dass es ihre persönliche Präferenz ist: developer.mozilla.org/Talk:en/DOM/window.location . Oder sehen Sie sich das Beispiel unten an, das nur verwendet wird, window.locationaber das muss nicht unbedingt so oder so sein: developer.mozilla.org/en/window.location .
James Skidmore
1
Ich benutze dies derzeit für die Android-Entwicklung. Ich habe Probleme, die Seite von JS im Androids-Standardbrowser umzuleiten. Ich habe versucht window.location.href = 'URL';und auch window.location.assign('URL');die Methode, die zum Neuladen einer neuen Seite entwickelt wurde. Weitere Informationen finden Sie unter w3schools.com/jsref/obj_location.asp
philipp
3
window.navigateist eine proprietäre Methode, die von Internet Explorer verwendet wird (ich bin mir sicher, ob andere Browser sie aus Kompatibilitätsgründen nachahmen, Chrome nicht). document.locationoder window.locationsind Standardobjekte (siehe die verschiedenen HTML / HTML5 / DOM-Spezifikationen). document.location = someURL(oder window.location = someURL) wird wahrscheinlich aufgrund von Legacy-Code unterstützt. Der richtige Weg ist document.location.href = someURLoder vielleicht document.location.assign(someURL).
PhistucK
11

window.navigate wird in einigen Browsern nicht unterstützt

In Java Script gibt es viele Möglichkeiten zur Umleitung, siehe den folgenden Code und die Erklärung

window.location.href = "http://krishna.developerstips.com/";
window.location = "http://developerstips.com/";
window.location.replace("http://developerstips.com/");
window.location.assign("http://work.developerstips.com/");

window.location.href lädt eine Seite aus dem Cache des Browsers und sendet die Anforderung nicht immer an den Server. Wenn Sie also eine alte Version der Seite im Cache verfügbar haben, wird diese dorthin weitergeleitet, anstatt eine neue Seite vom Server zu laden.

window.location.assign () -Methode für die Umleitung, wenn Sie dem Benutzer erlauben möchten, mit der Schaltfläche "Zurück" zum Originaldokument zurückzukehren.

window.location.replace () -Methode, wenn Sie zu einer neuen Seite umleiten möchten und dem Benutzer nicht erlauben möchten, mit der Zurück-Schaltfläche zur Originalseite zu navigieren.

Srikrushna
quelle
7

document.locatio n ist eine (veraltete, aber immer noch vorhandene) schreibgeschützte Zeichenfolge, die durch document.url ersetzt wird .

kennebec
quelle
6

window.location wirkt sich auch auf den Rahmen aus,

Die beste Form, die ich gefunden habe, ist:

parent.window.location.href

Und das Schlimmste ist:

parent.document.URL 

Ich habe einen massiven Browsertest durchgeführt und einige seltene IE mit mehreren Plugins werden mit der zweiten Form undefiniert.

Jolmos
quelle
Wäre top.window.location.href nach dieser Logik nicht noch besser?
Orwellophile
6

window.locationwirkt sich auf Ihr Browserziel aus. document.location wirkt sich nur auf Ihren Browser und Frame / Iframe aus.

Aldry Zhen
quelle
4

window.navigatewird in einigen Browsern NICHT unterstützt, so dass man es vermeiden sollte. Alle anderen Methoden, die die Location-Eigenschaft verwenden, sind der zuverlässigste und konsistenteste Ansatz

Troy Grosh
quelle
2

Ich würde mitgehen window.location = "http://..."; . Ich codiere seit einigen Jahren browserübergreifendes JavaScript und habe bei diesem Ansatz noch nie Probleme gehabt.

window.navigateund window.location.hrefscheint mir ein bisschen seltsam.

cllpse
quelle
13
window.location funktioniert, ist aber technisch nicht korrekt, da "location" ein Objekt ist.
James Skidmore
16
Aber alles in JavaScript ist ein Objekt :)
cllpse
1
Während so ziemlich alles in JavaScript ein Objekt ist, setzt das Zuweisen einer Zeichenfolge zu einem Objekt den Wert im Allgemeinen nicht auf eine seiner Eigenschaften (wie window.location oder document.location mit ihrer href-Eigenschaft), sondern ersetzt dieses Objekt durch a Zeichenfolge. In diesem Fall wurde eine Browser-Eigenart hinzugefügt, um mit vorhandenen (eigenartigen) Implementierungen und älteren (und nicht so alten) Inhalten kompatibel zu sein.
PhistucK
1

Es gibt wirklich keinen Unterschied; Es gibt ungefähr 5 verschiedene Methoden, um dies zu tun. Die, die ich am häufigsten sehe, sind jedoch document.locationund window.locationweil sie von allen gängigen Browsern unterstützt werden. (Ich persönlich habe noch nie gesehen, dass window.navigatees im Produktionscode verwendet wird. Vielleicht hat es keine sehr gute Unterstützung?)

Sasha Chedygov
quelle
document.location funktioniert nicht in allen Browsern. window.location tut es.
Philippe Leybaert
2
Firefox unterstützt window.navigate nicht
Andrew Harry
-5

Sie können Ihre Seite mit verschieben

window.location.href =Url;
Vishnu Gupta
quelle
3
Dies fügt nicht wirklich mehr Informationen hinzu als die akzeptierte und mehrfach abgestimmte Antwort ...
Stuart Siegler
3
Sie könnten sogar noch weiter gehen und argumentieren, dass Sie die akzeptierte Antwort einfach plagiiert haben
Liam