What is the best way to get the "anything" part after the domain part, using Javascript:
http://www.domain.com/anything
http://www.domain.com/#anything
http://www.domain.com/any/thing
For http://www.domain.com/#anything I would have to use window.location.hash. But for http://www.domain.com/anything I would have to use window.location.pathname.
I'm using:
window.location.href.replace(window.location.origin, "").slice(1)
Are there any caveats with this solution? Is there a better way?
window.location.pathname + window.location.search + window.location.hash
I think this one is a little bit better. You dont have to use any functions here...
Caveats:
location.origin
is not supported by IE.Other improvements:
.slice
is actually callingArray.prototype.slice
. A method call that requires a prototype lookup is bound to be slower than accessing the element you need directly, escpeciallly in your case, where theslice
method is returning an array with just 1 element anyway. So:You could use
location.pathname
, but be weary: the standard reads:but I think the easiest, most X-browser way of getting what you want is actually simply doing this:
It's very similar to what you have now, except for the fact that I'm not using
location.origin
, which, as shown on MDN is not supported by MS's IE...Another benefit is that I'm not calling
Array.prototype.slice
, which returns an array, and requires a prototype-lookup, which is marginally slower, too...