2012-12-02 16 views
5

Unten ist was ich habe. Diesewindow.location.indexOf funktioniert nicht in Javascript

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

gib mir alert ... aber wenn ich var myString = "http://localhost:8888/www.smart-kw.com/";-var myString = window.location; ändern, wird es nicht funktionieren (I alert nicht bekommen).

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

@MartijnPieters: Okay, ich werde mich darum kümmern. –

Antwort

22

window.location ist ein Objekt, kein String, und so ist es nicht eine indexOf Funktion haben. (Es ist durchaus verständlich, dass Menschen manchmal denke, es ist ein String gegeben, dass window.location = "some url"; tatsächlich funktioniert, aber es ist nicht ein.)

können Sie verwenden window.location.toString(), String(window.location) oder window.location.href eine Zeichenfolge für sie zu erhalten, wenn Sie mögen, oder Verwenden Sie eine der its various properties, um Besonderheiten zu überprüfen. Aus dem Link, gegebenen Beispiel url http://www.example.com:80/search?q=devmo#test:

  • hash: Der Teil der URL, der das Symbol #, darunter das Symbol # folgt. Sie können auf das Hashwechselereignis warten, um über Änderungen am Hash in unterstützenden Browsern benachrichtigt zu werden.
    Beispiel: #test
  • host: Der Hostname und die Portnummer.
    Beispiel: www.example.com:80
  • hostname: Der Hostname (ohne die Portnummer).
    Beispiel: www.example.com
  • href: Die gesamte URL.
    Beispiel: http://www.example.com:80/search?q=devmo#test
  • pathname: Der Pfad (relativ zum Host).
    Beispiel: /search
  • port: Die Portnummer der URL. Beispiel:
  • : Das Protokoll der URL.
    Beispiel: http:
  • search: Der Teil der URL, der dem? Symbol, einschließlich der? Symbol.
    Beispiel: ?q=devmo

Zum Beispiel für Ihr zitiertes Beispiel, könnten Sie window.location.hostname === "localhost" überprüfen.

3

Soweit ich weiß window.location ist ein Location object.

Zum Beispiel window.location.href wird Ihnen die gesamte URL geben.

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

Aber diese Art von Überprüfung ist verpflichtet, falsch-positive auszulösen. Sie verwenden besser die window.location.hostname-Eigenschaft, die den Hostnamen enthält.

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

fand ich einen Weg, um diese Arbeit zu machen:

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

ich das eigentlich für meine Projekte als conditionals verwenden und es funktioniert gut.