2010-04-19 3 views
18

Je sais que je peux utiliser window.location.pathname pour retourner une URL, mais comment analyser l'URL?jquery - get url path?

J'ai une URL comme ceci: http://localhost/messages/mine/9889 et j'essaye de vérifier si «mine» existe dans cette URL?

Donc, si « le mien » est la deuxième pièce dans cette URL, je veux écrire une instruction if sur cette base ...

if(second argument == 'mine') { do something } 

Répondre

44
if (location.pathname.split("/")[2] == "mine") { do something } 

Bien qu'il serait évidemment préférable de vérifier si il y a suffisamment d'éléments dans le tableau qui est retourné par split:

var a = location.pathname.split("/"); 
if (a.length > 2 && a[2] == "mine") { do something } 

Notez que même si les indices de tableau sont basés sur zéro, nous voulons préciser 2 que l'index pour obtenir ce que vous appelez le 2 argument partagé sp beds "/ messages/mines/9889" dans un tableau de 4 éléments:

["", "messages", "mine", "9889"] 
+1

vraiment comme la simplicité de cela. Pour supprimer tous les éléments vides et avoir un bon tableau des chemins utilisez ceci: 'var locationPaths = location.pathname.split ("/"). Filter (fonction (n) {return n! = ''});' – jnpWebDeveloper

5
if (window.location.pathname.split("/")[2] == "mine") { 
    // it exists 
}; 

window.location.pathname est une chaîne à la fin de la journée, de sorte que la string methods habituelle appliquent.

8

si jquery est une option , vous pourriez faire ce qui suit:

$.inArray("mine", window.location.pathname.split("/")) 
+0

Notez que ceci correspond à _any_ 'mine', et pas seulement à la seconde partie de l'URL. –

1

Même s'il s'agit d'une requête très ancienne .. il apparaît dans certaines recherches. Donc, pour ajouter mes notes .. ici

url.indexOf('mine') !== -1 

Le ci-dessus devrait être utilisé pour le contrôle de trouver si l'URL est une chaîne ... où pour trouver le chemin, il serait mieux d'utiliser

var a = document.createElement('a'); 
 
a.href = url; 
 
console.log(a.pathname); 
 
// if url='http://localhost/messages/mine/9889' 
 
// output will be /messages/mine/9889

espère que cela permettra d'économiser un certain temps les