JavaScript: Att sätta location.href versus location


När skulle du sätta location till en URL-sträng jämfört med att sätta location.href?

location = "http://www.stackoverflow.com";

mot

location.href = "http://www.stackoverflow.com";

Mozilla Developer Network-referens

Svar #1

Du kan ställa in location direkt eftersom det är något kortare. Om du försöker vara kortfattad kan du vanligtvis också utelämna window..

URL-tilldelningar till både location.href och location är definierade för att fungera i JavaScript 1.0, redan i Netscape 2, och har implementerats i alla webbläsare sedan dess. Så välj och använd det som du tycker är tydligast.

Svar #2

Även om båda fungerar, skulle jag använda den senare.

Svar #3

Som det redan har sagts. Men, du kommer att göra bättre i att använda .href-versionen.

Svar #4

För ett par år sedan fungerade inte location för mig i IE och location.href gjorde det (och båda fungerade i andra webbläsare). Sedan dess har jag alltid bara använt location.href och har aldrig haft problem igen. Jag kan inte komma ihåg vilken version av IE det var.

Svar #5

En skillnad att hålla i åtanke, dock.

Låt oss säga att du vill bygga en URL med den nuvarande URL:en. Följande kod kommer faktiskt att omdirigera dig, eftersom den inte anropar String.prototype.replace utan Location.prototype.replace:

nextUrl = window.location.replace('/step1', '/step2');

Följande koder fungerar:

// cast to string
nextUrl = (window.location+'').replace('/step1', '/step2');

// href property
nextUrl = window.location.href.replace('/step1', '/step2');

Svar #6

Bara för att förtydliga, du kan inte göra location.split(''#''), location är ett objekt, inte en sträng. Men du kan göra location.href.split(''#''); eftersom location.href är en sträng.

Svar #7

Med TypeScript, använd window.location.href eftersom window.location tekniskt sett är ett objekt som innehåller:

Properties
hash
host
hostname
href    <--- you need this
pathname (relative to the host)
port
protocol
search

Att sätta window.location kommer att ge ett typfel, medan window.location.href är av typen string.

Källa

Relaterade artiklar