jquery, domaine, obtenir l'URL

140

Comment puis-je obtenir le nom de domaine avec jquery ??

AlexC
la source

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.

Sampson
la source
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.

superluminaire
la source
@ 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)

Bibby
la source
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
la source
@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);
Nimesh07
la source
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
Adam
la source
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.

jsbeckr
la source
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('.');
Muhammad Mohsin Muneer
la source
1

vérifie ça

alert(window.location.hostname);

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

code.rider
la source
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');
}
Zoltán Süle
la source
-2
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-z]+.)/,"");
}
Gubatron
la source
-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}
Gubatron
la source
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