2012-12-02 15 views
5

Poniżej jest to, co mam.window.location.indexOf nie działa w JavaScript

var myString = "http://localhost:8888/www.smart-kw.com/"; 
alert(myString.indexOf("localhost")); 

To daje mi alert ... jednak jeśli zmienię var myString = "http://localhost:8888/www.smart-kw.com/"; do var myString = window.location;, to nie zadziała (nie dostać alert).

var myString = window.location; 
alert(myString.indexOf("localhost")); 
+0

@MartijnPieters: Okay, ja to załatwię. –

Odpowiedz

22

window.location jest przedmiotem, a nie ciąg znaków, a więc nie ma funkcji indexOf. (Jest to całkowicie zrozumiałe, że ludzie czasami myślą, że jest to ciąg, biorąc pod uwagę, że window.location = "some url"; faktycznie działa, ale to nie jest jeden.)

Można użyć window.location.toString(), String(window.location) lub window.location.href uzyskać ciąg dla niego, jeśli chcesz, lub użyj dowolnego z its various properties, aby sprawdzić szczegóły. Z linku, podano przykład url http://www.example.com:80/search?q=devmo#test:

  • hash: część adresu URL, który następuje symbol #, w tym symbolu #. Możesz słuchać zdarzenia hashchange, aby otrzymywać powiadomienia o zmianach w haśle w przeglądarkach obsługujących.
    Przykład: #test
  • host: Nazwa hosta i numer portu.
    przykład: www.example.com:80
  • hostname: Nazwa hosta (bez numeru portu).
    Przykład: www.example.com
  • href: Cały adres URL.
    Przykład: http://www.example.com:80/search?q=devmo#test
  • pathname: Ścieżka (względem hosta).
    Przykład: /search
  • port: Numer portu w adresie URL.
    Przykład: 80
  • : Protokół adresu URL. Przykład: http:
  • search: Część adresu URL zgodna z? symbol, w tym? symbol.
    Przykład: ?q=devmo

Na przykład, za cytowanym przykładzie, użytkownik może sprawdzić window.location.hostname === "localhost".

3

O ile mi wiadomo, window.location to Location object. Na przykład window.location.href podaje cały adres URL.

var url = window.location.href; 
alert(url.indexOf("domain")); 

Jednak ten rodzaj kontroli powoduje wywołanie fałszywych alarmów. Lepiej korzystasz z właściwości window.location.hostname, która przechowuje część nazwy hosta.

var hostname = window.location.hostname; 
alert(hostname === "my.domain.com"); 
1

znalazłem sposób, aby tę pracę:

(window.location.href).indexOf("localhost") > -1) 

I rzeczywiście korzystać z tego dla moich projektów jak warunkowych i to działa dobrze.