2012-12-02 14 views
5

Di seguito è quello che ho.window.location.indexDa non funziona in Javascript

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

Questo darmi avviso ... però se cambio var myString = "http://localhost:8888/www.smart-kw.com/";-var myString = window.location;, non funziona (non ho ricevuto avviso).

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

@MartijnPieters: Ok, ci penserò io. –

risposta

22

window.location è un oggetto, non una stringa, e quindi non hanno una funzione indexOf. (E 'perfettamente comprensibile che la gente a volte pensa che sia una stringa, dato che window.location = "some url"; effettivamente funziona, ma non è uno.)

È possibile utilizzare window.location.toString(), String(window.location), o window.location.href per ottenere una stringa per esso, se volete, o utilizzare uno qualsiasi di its various properties per verificare le specifiche. Dal link, esempio dato url http://www.example.com:80/search?q=devmo#test:

  • hash: La parte dell'URL che segue il simbolo #, compreso il simbolo #. È possibile ascoltare l'evento hashchange per ricevere una notifica delle modifiche all'hash nei browser di supporto.
    Esempio: #test
  • host: il nome host e il numero di porta. Esempio: www.example.com:80
  • hostname: il nome host (senza il numero di porta).
    Esempio: www.example.com
  • href: L'intero URL.
    Esempio: http://www.example.com:80/search?q=devmo#test
  • pathname: Il percorso (relativo all'host).
    Esempio: /search
  • port: il numero di porta dell'URL.
    Esempio: 80
  • : il protocollo dell'URL.
    Esempio: http:
  • search: la parte dell'URL che segue il? simbolo, compreso il? simbolo.
    Esempio: ?q=devmo

Ad esempio, per l'esempio citato, si potrebbe verificare window.location.hostname === "localhost".

3

Per quanto ne so window.location è un Location object.

Ad esempio, window.location.href fornirà l'intero URL.

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

Ma questo tipo di controllo è destinato a provocare falsi positivi. È meglio usare la proprietà window.location.hostname che contiene la parte del nome host.

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

ho trovato un modo per fare questo lavoro:

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

Io in realtà uso questo per i miei progetti come condizionali e funziona bene.