Reputation: 6023
When would you set location
to a URL string versus setting location.href
?
location = "http://www.stackoverflow.com";
vs
location.href = "http://www.stackoverflow.com";
Mozilla Developer Network Reference
Upvotes: 358
Views: 302503
Reputation: 16383
One difference to keep in mind, though.
Let's say you want to build some URL using the current URL. The following code will in fact redirect you, because it's not calling String.prototype.replace
but Location.prototype.replace
:
nextUrl = window.location.replace('/step1', '/step2');
The following codes work:
// cast to string
nextUrl = (window.location+'').replace('/step1', '/step2');
// href property
nextUrl = window.location.href.replace('/step1', '/step2');
Upvotes: 20
Reputation: 3924
With TypeScript, use window.location.href
as window.location
is technically an object containing:
Properties
hash
host
hostname
href <--- you need this
pathname (relative to the host)
port
protocol
search
Setting window.location
will produce a type error, while
window.location.href
is of type string.
Upvotes: 13
Reputation: 787
Like as has been said already. But, you will do better to use the .href
version.
Upvotes: 65
Reputation: 4608
Use global.location.href
instead, while working with React
.
Upvotes: 3
Reputation: 536775
You might set location
directly because it's slightly shorter. If you're trying to be terse, you can usually omit the window.
too.
URL assignments to both location.href
and location
are defined to work in JavaScript 1.0, back in Netscape 2, and have been implemented in every browser since. So take your pick and use whichever you find clearest.
Upvotes: 293
Reputation: 1933
Just to clarify, you can't do location.split('#')
, location
is an object, not a string. But you can do location.href.split('#');
because location.href
is a string.
Upvotes: 16
Reputation: 1466
A couple of years ago, location
did not work for me in IE and location.href
did (and both worked in other browsers). Since then I have always just used location.href
and never had trouble again. I can't remember which version of IE that was.
Upvotes: 24