2009-10-27 4 views
3

Je trouve qu'il est impossible de rechercher une valeur particulière dans la barre d'adresse.Comment analyser l'adresse du navigateur Web en utilisant javascript et window.location?

var str = window.location; 
//var str = "http://www.website.com/78203/"; 

var x = str.search(/78203/i); 

alert(x); 

Le code ci-dessus ne retourne rien, et tue en fait le fonctionnement de quoi que ce soit d'autre (indiquant une erreur), mais rien ne se jette dans la console.

Si vous supprimez le commentaire, il fonctionne correctement, renvoyant une valeur supérieure à -1 (ce qui signifie qu'il a été trouvé quelque chose).

Ceci est évidemment quelque chose que je ne comprends pas correctement, quelqu'un peut-il m'aider?

Répondre

6

Vous devez utiliser window.location.href, parce que window.location est un objet, pas une chaîne, et il a une propriété search, qui contient la partie de l'URL qui suit le? symbole, y compris le? symbole.

var str = window.location.href; 

var x = str.search(/78203/i); 

Vous pouvez également utiliser la fonction String.indexOf:

var str = window.location.href; 

var x = str.indexOf('78203'); 

Ils ont tous deux vous retourner la position de caractère de la première occurrence de la chaîne recherchée (ou motif), et si la valeur est introuvable , il vous renverra -1.

+0

ouais! cela fonctionne très bien, quel était le problème avec l'utilisation de la recherche - cela a bien fonctionné avec une chaîne manuelle. – jakeisonline

+0

il n'y a rien de mal à la recherche, le problème est que vous n'avez pas cherché une chaîne –

+2

Comme le dit CMS, window.location est un objet avec une propriété "search". Vous accédiez à cela à la place de la propriété de String. – Pablo

1

window.location est un objet, et search est seulement une méthode de chaînes, il doit donc être converti en une chaîne avant de pouvoir faire quoi que ce soit de chaîne-y avec elle.

var str = window.location.toString(); 

var x = str.search(/78203/i); 
+0

En fait, je me suis rendu compte que c'était probablement autre chose qu'une chaîne, alors j'ai essayé cette méthode - mais ça n'a pas l'air de marcher pour moi. – jakeisonline

2

window.location est en fait un Location object, pas une chaîne. Que se passe-t-il si vous remplacez votre code par var str = window.location.href?

Questions connexes