Comment obtenir le dernier segment d'une URL? J'ai le script suivant qui affiche l'url complète de la balise d'ancrage cliquée:
$(".tag_name_goes_here").live('click', function(event)
{
event.preventDefault();
alert($(this).attr("href"));
});
Si l'url est
http://mywebsite/folder/file
comment puis-je obtenir uniquement pour afficher la partie "fichier" de l'URL dans la boîte d'alerte?
javascript
jquery
oshirowanen
la source
la source
Réponses:
Vous pouvez également utiliser la fonction lastIndexOf () pour localiser la dernière occurrence du
/
caractère dans votre URL, puis la fonction substring () pour renvoyer la sous-chaîne à partir de cet emplacement:De cette façon, vous éviterez de créer un tableau contenant tous vos segments d'URL, comme le
split()
fait.la source
admin/store/tour/-1/
ça, ce serait une''
chaîne?/
à la fin?/
à la fin:var url = window.location.href.replace(/\/$/, ''); /* remove optional end / */ var lastSeg = url.substr(url.lastIndexOf('/') + 1);
la source
http://mywebsite/folder/file/
"" == false
dans ce cas, elle affiche la partie du tableau avec la chaîne videla source
/
.console.log(history.location.pathname.split("/").pop())
S'il y a une meilleure façon, j'aimerais savoir! Espérons que ce commentaire puisse conduire plus de personnes à votre réponse. Merci @ Dblock247Juste une autre solution avec regex.
la source
Javascript a la fonction split associée à l'objet chaîne qui peut vous aider:
la source
Les autres réponses peuvent fonctionner si le chemin est simple, composé uniquement d'éléments de chemin simples. Mais quand il contient également des paramètres de requête, ils cassent.
Il vaut mieux utiliser un objet URL pour cela à la place pour obtenir une solution plus robuste. Il s'agit d'une interprétation analysée de l'URL actuelle:
Contribution:
const href = 'https://stackoverflow.com/boo?q=foo&s=bar'
Production:
'boo'
Cela fonctionne pour tous les navigateurs courants. Seul notre IE mourant ne prend pas en charge cela (et ne le fera pas). Pour IE, il existe cependant des polyfills (si vous vous en souciez ).
la source
Ou vous pouvez utiliser une expression régulière:
la source
alert(window.location.href.replace(/\/$/, '').replace(/.*//, ''))
la source
Je sais, il est trop tard, mais pour d'autres: je recommande fortement d' utiliser le plugin PURL jquery . La motivation pour PURL est que l'url peut également être segmentée par '#' (exemple: liens angular.js), c'est-à-dire que l'url pourrait ressembler à
ou
Et avec PURL, vous pouvez facilement décider (segment / fsegment) quel segment vous souhaitez obtenir.
Pour le dernier segment "classique", vous pouvez écrire:
la source
S'appuyant sur la réponse de Frédéric en utilisant uniquement le javascript:
la source
Aussi,
la source
Si vous n'êtes pas inquiet de générer les éléments supplémentaires à l'aide du fractionnement, le filtre peut gérer le problème que vous mentionnez de la barre oblique de fin (en supposant que le navigateur soit compatible avec le filtre).
la source
targetValue = un
Si votre URL ressemble à:
ou
ou
Ensuite, loc finit par ressembler à: http://test.com/one
Maintenant, puisque vous voulez le dernier élément, exécutez l'étape suivante pour charger la valeur (targetValue) que vous vouliez à l'origine.
la source
search
ouhash
.Utilisez la
pathname
propriété native car elle est la plus simple et a déjà été analysée et résolue par le navigateur.$(this).attr("href")
peut renvoyer des valeurs comme celles../..
qui ne vous donneraient pas le résultat correct.Si vous devez conserver le
search
ethash
(par exemplefoo?bar#baz
dehttp://quux.com/path/to/foo?bar#baz
) utiliser ceci:la source
pathname
les paramètres de requête sont supprimés, maishref
pas.Pour obtenir le dernier segment de votre fenêtre actuelle:
window.location.href.substr(window.location.href.lastIndexOf('/') +1)
la source
vous pouvez d'abord supprimer s'il y a / à la fin, puis récupérer la dernière partie de l'URL
la source
Renvoie le dernier segment, indépendamment des barres obliques de fin:
la source
path.sep
une barre oblique littérale. Voir nodejs.org/api/path.html#path_path_sep . Cela gardera votre code portable sur tous les systèmes d'exploitation.Copié de cette réponse
la source
Réponse raddevus mise à jour:
Imprime le dernier chemin de l'url sous forme de chaîne:
la source
Je pense qu'il est plus sûr de supprimer la barre oblique ('/') avant de faire la sous-chaîne. Parce que j'ai une chaîne vide dans mon scénario.
la source
J'utilise regex et split:
var last_path = location.href.match (/. / (. [\ w]) /) [1] .split ("#") [0] .split ("?") [0]
Au final, il ignorera #? & / fin des URL, ce qui arrive souvent. Exemple:
https://cardsrealm.com/profile/cardsRealm -> Retours de cartesRealm
https://cardsrealm.com/profile/cardsRealm#hello -> Retours de cartesRealm
https://cardsrealm.com/profile/cardsRealm?hello -> Retours de cartesRealm
https://cardsrealm.com/profile/cardsRealm/ -> Retours de cartesRealm
la source
Je ne sais pas vraiment si la regex est la bonne façon de résoudre ce problème car elle peut vraiment affecter l'efficacité de votre code, mais la regex ci-dessous vous aidera à récupérer le dernier segment et vous donnera toujours le dernier segment même si l'URL est suivi d'un vide
/
. Le regex que j'ai trouvé est:la source
Travaille pour moi.
la source
Je sais que c'est vieux mais si vous voulez l'obtenir à partir d'une URL, vous pouvez simplement utiliser:
document.location.pathname
obtient le chemin d'accès à partir de l'URL actuelle.lastIndexOf
obtenir l'indice de la dernière occurrence de la regex suivante, dans notre cas est/.
. Le point signifie n'importe quel caractère, donc, il ne comptera pas si/
c'est le dernier caractère de l'URL.substring
va couper la chaîne entre deux index.la source
si l'url est
http://localhost/madukaonline/shop.php?shop=79
console.log(location.search);
apportera?shop=79
donc la manière la plus simple est d'utiliser location.search
vous pouvez rechercher plus d'informations ici et ici
la source
Vous pouvez le faire avec des chaînes de requête de chemins simples (w / 0), etc.
Accordé probablement trop complexe et probablement pas performant, mais je voulais l'utiliser
reduce
pour le plaisir.la source