window.location
je vlastnost přístupového objektu a získáním jeho hodnoty získáte objekt, nikoli řetězec, a proto nemá indexOf
funkce. (Je naprosto pochopitelné, že si lidé někdy myslí, že je to řetězec, od kdy nastavíte jeho hodnotu, setter vlastnosti přístupového objektu přijímá řetězec; tedy window.location = "some url";
skutečně funguje. Ale když dostanete to, nedostanete řetězec.)
Můžete použít window.location.toString()
, String(window.location)
nebo window.location.href
získat pro něj řetězec, pokud chcete, nebo použít některou z jeho různých vlastností ke kontrole specifik. Z odkazu uvedeného příkladu adresy URL http://www.example.com:80/search?q=devmo#test
:
hash
:Část adresy URL, která následuje za symbolem #, včetně symbolu #. Můžete naslouchat události hashchange, abyste byli informováni o změnách hash v podporovaných prohlížečích.
Příklad:#test
host
:Název hostitele a číslo portu.
Příklad:www.example.com:80
hostname
:Název hostitele (bez čísla portu).
Příklad:www.example.com
href
:Celá adresa URL.
Příklad:http://www.example.com:80/search?q=devmo#test
pathname
:Cesta (vzhledem k hostiteli).
Příklad:/search
port
:Číslo portu adresy URL.
Příklad:80
protocol
:Protokol adresy URL.
Příklad:http:
search
:Část adresy URL, která následuje za ? symbol, včetně ? symbol.
Příklad:?q=devmo
Například pro váš citovaný příklad můžete zaškrtnout window.location.hostname === "localhost"
.
Pokud vím, window.location
je Location object
.
Například window.location.href
vám poskytne celou adresu URL.
var url = window.location.href;
alert(url.indexOf("domain"));
Tento druh kontroly však nutně spouští falešně pozitivní výsledky. Je lepší použít window.location.hostname
vlastnost, která obsahuje část názvu hostitele.
var hostname = window.location.hostname;
alert(hostname === "my.domain.com");