Below is what I have.
var myString = "http://localhost:8888/www.smart-kw.com/";
alert(myString.indexOf("localhost"));
This give me alert... however if I change var myString = "http://localhost:8888/www.smart-kw.com/";
to var myString = window.location;
, it won't work (I don't get alert).
var myString = window.location;
alert(myString.indexOf("localhost"));
window.location
is an accessor property, and getting its value gives you an object, not a string, and so it doesn't have an indexOf
function. (It's perfectly understandable that people sometimes think it's a string, since when you set its value, the accessor property's setter accepts a string; that is, window.location = "some url";
actually works. But when you get it, you don't get a string.)
You can use window.location.toString()
, String(window.location)
, or window.location.href
to get a string for it if you like, or use any of its various properties to check specifics. From the link, given example url http://www.example.com:80/search?q=devmo#test
:
hash
: The part of the URL that follows the # symbol, including the # symbol. You can listen for the hashchange event to get notified of changes to the hash in supporting browsers.#test
host
: The host name and port number.www.example.com:80
hostname
: The host name (without the port number).www.example.com
href
: The entire URL.http://www.example.com:80/search?q=devmo#test
pathname
: The path (relative to the host)./search
port
: The port number of the URL.80
protocol
: The protocol of the URL.http:
search
: The part of the URL that follows the ? symbol, including the ? symbol.?q=devmo
For instance, for your quoted example, you might check window.location.hostname === "localhost"
.