Wann würden Sie location
eine URL-Zeichenfolge im Vergleich zur Einstellung festlegen location.href
?
location = "http://www.stackoverflow.com";
vs.
location.href = "http://www.stackoverflow.com";
javascript
chimärisch
quelle
quelle
location.href
E-Mail schlägt aufgrund der Richtlinie für denselben Ursprung fehl: javascript.info/tutorial/…replace
undassign
: stackoverflow.com/q/1865837/632951 , stackoverflow.com/q/7703689/632951 , stackoverflow.com/q/10302905/632951Antworten:
Sie können
location
direkt einstellen, weil es etwas kürzer ist. Wenn Sie versuchen, knapp zu sein, können Sie dies normalerweise auch weglassenwindow.
.URL-Zuweisungen für beide
location.href
undlocation
sind so definiert, dass sie in JavaScript 1.0, zurück in Netscape 2, funktionieren. Seitdem wurden sie in jedem Browser implementiert. Treffen Sie also Ihre Wahl und verwenden Sie das, was Sie am klarsten finden.quelle
Selbst wenn beide funktionieren, würde ich letzteres verwenden.
location
ist ein Objekt, und das Zuweisen einer Zeichenfolge zu einem Objekt ist kein gutes Zeichen für die Lesbarkeit oder Wartung.quelle
window.location
: Dies ist nicht erforderlichSAME ORIGIN
.location = 'http://www.example.com'
scheint super lesbar. Allerdings als Sonderfall. Das ist abwärtskompatibel und wird auf absehbare Zeit kompatibel bleiben .Wie schon gesagt,
.location
ist ein ObjektAber diese Person schlug vor, entweder zu verwenden.Sie sollten die.href
Version jedoch besser verwenden .Objekte haben Standardeigenschaften, die angenommen werden, wenn nichts anderes angegeben ist. Im Fall deslocation
Objekts hat es eine Eigenschaft namens.href
. Wenn Sie während der Zuweisung keine Eigenschaft angeben, wird standardmäßig "href" angenommen.Dies ist alles in Ordnung, bis sich eine spätere Objektmodellversion ändert und entweder keine Standardeigenschaft mehr vorhanden ist oder die Standardeigenschaft geändert wird. Dann bricht Ihr Programm unerwartet ab.
Wenn Sie meinenhref
, sollten Sie angebenhref
.quelle
location
funktioniert, da die Eigenschaft so definiert wurde, dass sie dieses spezielle Zuweisungsverhalten in JavaScript 1.0 aufweist, und seitdem hat jeder Browser dies implementiert. HTML5 benötigt es jetzt. Die Zuweisung.href
ist zwar hübscher oder konsistenter , bietet jedoch keinen Vorteil hinsichtlich der Abwärts- oder Vorwärtskompatibilität.window.location = url
ist schönerlocation = url
ist niedlicherVor ein paar Jahren
location
funktionierte nicht für mich im IE undlocation.href
tat es (und beide arbeiteten in anderen Browsern). Seitdem habe ich immer nur benutztlocation.href
und hatte nie wieder Probleme. Ich kann mich nicht erinnern, welche Version von IE das war.quelle
strict mode
Chrome wird eine Ausnahmelocation
location.href
Nur um zu verdeutlichen, können Sie nicht tun
location.split('#')
,location
ist ein Objekt, keine Zeichenfolge. Aber Sie können tun,location.href.split('#');
weillocation.href
ist eine Zeichenfolge.quelle
Ein Unterschied, den Sie jedoch beachten sollten.
Angenommen, Sie möchten eine URL mit der aktuellen URL erstellen. Der folgende Code leitet Sie tatsächlich weiter, da er nicht aufruft,
String.replace
sondernLocation.replace
:Die folgenden Codes funktionieren:
quelle
Mit Typoskript Verwendung
window.location.href
alswindow.location
technisch ein Objekt enthält:Die Einstellung
window.location
führt zu einem Typfehler, währendwindow.location.href
es sich um eine Typzeichenfolge handelt.Quelle
quelle