jquery, domaine, obtenir l'URL


Réponses:


335

Vous n'avez pas besoin de jQuery pour cela, car un simple javascript suffira:

alert(document.domain);

Voyez-le en action:

console.log("Output;");  
console.log(location.hostname);
console.log(document.domain);
alert(window.location.hostname)

console.log("document.URL : "+document.URL);
console.log("document.location.href : "+document.location.href);
console.log("document.location.origin : "+document.location.origin);
console.log("document.location.hostname : "+document.location.hostname);
console.log("document.location.host : "+document.location.host);
console.log("document.location.pathname : "+document.location.pathname);

Pour plus de valeurs liées au domaine, consultez les propriétés de window.locationonline. Vous pouvez trouver que location.hostc'est une meilleure option, car son contenu peut différer de document.domain. Par exemple, l'URL http://192.168.1.80:8080n'aura que l'adresse IP dans document.domain, mais à la fois l'adresse IP et le numéro de port dans location.host.


7
@ rob.alarcon C'est une recommandation du W3C et bénéficie d'un très large support parmi les navigateurs, anciens et nouveaux. Le seul problème que je connaisse est que certains navigateurs ( comme Firefox ) vous permettent d'écrire dans cette propriété (en lecture seule selon les spécifications) tant que la nouvelle valeur est un sous-domaine du domaine d'origine.
Sampson

4
Je recommanderais en fait d'utiliser window.location.host(comme Bibby l'a publié). Je viens de corriger un bug où document.domainétait défini sur le domaine racine au lieu du sous-domaine.
Derek Morrison

Dans IE11 document.location.originrenvoie undefined.
TimothyBuktu

113

ÉDITER:

Si vous n'avez pas besoin de prendre en charge IE10, vous pouvez simplement utiliser: document.location.origin

Réponse originale, si vous avez besoin d'un support hérité

Vous pouvez obtenir tout cela et plus encore en inspectant l'objet de localisation:

location = {
  host: "stackoverflow.com",
  hostname: "stackoverflow.com",
  href: "http://stackoverflow.com/questions/2300771/jquery-domain-get-url",
  pathname: "/questions/2300771/jquery-domain-get-url",
  port: "",
  protocol: "http:"
}

alors:

location.host 

serait le domaine, dans ce cas stackoverflow.com. Pour la première partie complète de l'url, vous pouvez utiliser:

location.protocol + "//" + location.host

qui dans ce cas serait http://stackoverflow.com

Aucun jQuery requis.



@ Pour l'url complète, pourquoi ne pas utiliser document.location.origince qui aboutira à https://stackoverflow.com . Cette méthode comprend le protocole approprié
Nathileo le

33

Similaire à la réponse avant qu'il y ait

location.host

L'emplacement global contient également des informations plus amusantes sur l'URL actuelle. (protocole, hôte, port, chemin, recherche, hachage)


20

Si vous avez besoin de string, comme moi, utilisez cette fonction - cela fonctionne vraiment.

function getHost(url)
{
    var a = document.createElement('a');
    a.href = url;
    return a.hostname;
}

Mais notez que s'il y a un sous-domaine (par exemple www.) Dans l'URL, il sera renvoyé avec le nom d'hôte. Inversement, s'il n'y a pas de sous-domaine, le nom d'hôte n'en aura pas non plus.


@Vova Popov (ou quelqu'un) pourrait-il clarifier la dernière phrase? "www. ar pas www."?!?
Randall Cook

2
Il dit que a.hostname renverra le www. cela fait partie de votre domaine. Donc en d'autres termes, ce serait faux: getHost('http://www.google.com') == 'google.com'alors que ce serait vrai:getHost('http://google.com') == 'google.com'
Milimetric

9

Vous pouvez utiliser les codes ci-dessous pour obtenir différents paramètres de l'URL actuelle

alert("document.URL : "+document.URL);
alert("document.location.href : "+document.location.href);
alert("document.location.origin : "+document.location.origin);
alert("document.location.hostname : "+document.location.hostname);
alert("document.location.host : "+document.location.host);
alert("document.location.pathname : "+document.location.pathname);

existe-t-il également un moyen d'obtenir l'hôte où le fichier js est hébergé au lieu du document? au m. Je manipule le côté serveur de fichiers js pour obtenir cette chaîne de "connexion" qui fonctionne mais semble inefficace car je préférerais un fichier js statique.
yellowsir

6

jQuery n'est pas nécessaire, utilisez du javascript simple:

document.domain

peut-être qu'il n'en a pas besoin mais en disant comme ça vous n'êtes pas répondre à la question
Emiliano

Ouais, je ne suis pas un robot qui répond littéralement à la question. J'ai répondu à la question de manière pragmatique en sachant quel était l'objectif final et que vous n'avez pas besoin de jQuery pour atteindre l'objectif.
Adam

Je comprends mais ce genre de réponse n'est pas complet, si vous voulez, vous pouvez faire une meilleure réponse
Emiliano

3

document.baseURIvous donne le domaine + le port. Il est utilisé si une balise d'image utilise un chemin relatif au lieu d'un chemin absolu. Probablement déjà résolu, mais cela pourrait être utile pour d'autres gars.


2
var part = location.hostname.split('.');
var subdomains = part.shift();
var upperleveldomains = part.join('.');

domaine de second niveau, vous pouvez utiliser

var sleveldomain = parts.slice(-2).join('.');

1

vérifie ça

alert(window.location.hostname);

cela renverra le nom d'hôte comme www.domaine.com


0

pour autant que je vois, personne n'a posté la solution jquery mais le code javascript natif.

Vous devez passer l'url sous forme de chaîne et il obtiendra l'hôte sans utiliser de regexp.

function getHostFromUrl(urlString) {
    return $a = $('<a>', {
        'href': urlString
    }).prop('host');
}

-2
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-z]+.)/,"");
}

-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}

3
mais si l'url n'a pas déjà le préfixe, elle supprimera le nom de domaine .. Exemple: "stackoveflow.com" deviendra "com"
Filipiz

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.- Jamie Zawinski
msangel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.