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 :
- protocole :
http:
- nom d'hôte :
example.com
- chemin d'accès :
something/file
- 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.