7 votes

Afficher la dernière partie de l'URL en javascript ?

J'ai besoin d'afficher la dernière partie d'une URL en utilisant le javascript !

J'utilise ce code mais il affiche l'intégralité de l'URL :

<script language="javascript">

document.writeln(document.location);
var url = $(this).attr("href");
var part = url.substring(url.lastIndexOf('/') + 1);

</script>

si l'URL ressemble à ceci :

domaine.com/quelque chose/fichier

J'ai besoin d'afficher uniquement le "fichier".

14voto

kalley Points 7737

La raison document.write(window.location) écrit l'emplacement est en raison de la toString méthode de window.location qui renvoie en réalité window.location.href .

// This will fallback to the location.pathname if this
// is not the location already or not an anchor.
var path = this.pathname || window.location.pathname;
var part = path.split('/').pop();

Le nom de chemin est tout ce qui suit le nom de domaine. Donc, http://example.com/something/file se décompose comme suit :

  1. protocole : http:
  2. nom d'hôte : example.com
  3. chemin d'accès : something/file
  4. href : http://example.com/something/file

(il y a aussi le port, la recherche ( ?this=that ) et de hachage ( #hash ), qui seraient toutes deux vides dans ce cas)

Donc, je prends something/file y split dans un tableau, quel que soit le lieu où il s'agit d'une / qui serait ["something", "file"]

Après ça, je suis pop ping sur la dernière partie du tableau, dans ce cas "file".


Les deux sites window.location et tout <a> ont ces propriétés. Ainsi, si vous devez analyser une URL, vous pouvez faire ce qui suit en javascript :

var anchor = document.createElement('a');
anchor.href = '/about'; // this could be any relative or absolute url

Et maintenant anchor aura toutes ces propriétés si vous en avez besoin. Il n'est pas nécessaire d'utiliser une expression rationnelle ou autre.


UPDATE

Dans les navigateurs plus récents (à l'exception d'IE, sauf si vous utilisez url-polyfill ), vous pouvez utiliser URL au lieu d'un <a /> comme ça :

const url = new URL('/about', this.location)
// or if you don't care about the host, you can do the following
// const url = new URL('http://localhost/about')

Il contient toutes les autres informations, plus url.searchParams ce qui vous permet de ne pas avoir à analyser vous-même la chaîne de recherche.

8voto

Ali Gajani Points 5445
<script type="text/javascript">

var segment_str = window.location.pathname; // return segment1/segment2/segment3/segment4
var segment_array = segment_str.split( '/' );
var last_segment = segment_array.pop();
document.write(last_segment); // alerts segment4

</script>

JsFiddle : http://jsfiddle.net/HNMV3/1/

1voto

fedeetz Points 5610
var pathname = window.location.pathname,
    part = pathname.substr(pathname.lastIndexOf('/') + 1);

0voto

Abhishek Sen Points 188

Replace(/-/g," ") et split(".html") supprimeront les "traits d'union" et ".html" de l'url, ne conservant ainsi que le nom du chemin d'accès.

var parts=window.location.pathname.split("/");
var query=parts[parts.length-1].split(".html");
query[0]=query[0].replace(/-/g," ");
document.write(query[0])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X