web-dev-qa-db-fra.com

Obtenez le nom de domaine actuel avec Javascript (pas le chemin, etc.)

Je prévois d'acheter deux noms de domaine pour le même site. Selon le domaine utilisé, je prévois de fournir des données légèrement différentes sur la page. Existe-t-il un moyen pour moi de détecter le nom de domaine dans lequel la page est en cours de chargement afin de savoir en quoi changer mon contenu?

J'ai regardé autour de moi pour des choses comme celle-ci, mais la plupart ne fonctionnent pas comme je le souhaite.

Par exemple en utilisant

document.write(document.location)

sur JSFiddle il retourne

http://fiddle.jshell.net/_display/

c'est-à-dire le chemin réel ou quoi que ce soit.

152
FreeSnow

Que diriez-vous:

window.location.hostname

L'objet location a en réalité un nombre d'attributs faisant référence à différentes parties de l'URL

332
Gareth

Si vous n'êtes pas intéressé par le nom d'hôte (par exemple www.beta.example.com) mais par le nom de domaine (par exemple example.com), cela fonctionne pour les noms d'hôte valides:

function getDomainName(hostName)
{
    return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}
23
cprcrack
function getDomain(url, subdomain) {
    subdomain = subdomain || false;

    url = url.replace(/(https?:\/\/)?(www.)?/i, '');

    if (!subdomain) {
        url = url.split('.');

        url = url.slice(url.length - 2).join('.');
    }

    if (url.indexOf('/') !== -1) {
        return url.split('/')[0];
    }

    return url;
}

Exemples

La version précédente obtenait le domaine complet (y compris le sous-domaine). Elle détermine maintenant le bon domaine en fonction des préférences. Ainsi, lorsqu'un deuxième argument est défini comme vrai, il inclut le sous-domaine, sinon il ne renvoie que le "domaine principal"

15
adelineu

Vous pouvez l'obtenir facilement depuis un objet de localisation en Javascript:

Par exemple, l'URL de cette page est: 

http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc

Ensuite, nous pouvons obtenir le domaine exact avec les propriétés suivantes de l'objet location:

location.Host = "www.stackoverflow.com"
location.protocol= "http:"

vous pouvez faire le domaine complet avec:

location.protocol + "//" + location.Host

Qui dans cet exemple retourne http://www.stackoverflow.com 

En plus de cela, nous pouvons obtenir l'URL complète ainsi que le chemin d'accès avec d'autres propriétés de l'objet location 

location.href= "http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"    
location.pathname= "questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"
9
Iman Sedighi

Si vous êtes uniquement intéressé par le nom de domaine et souhaitez ignorer le sous-domaine, vous devez l'analyser à partir de Host et hostname

Le code suivant fait ceci:

var firstDot = window.location.hostname.indexOf('.');
var tld = ".net";
var isSubdomain = firstDot < window.location.hostname.indexOf(tld);
var domain;

if (isSubdomain) {
    domain = window.location.hostname.substring(firstDot == -1 ? 0 : firstDot + 1);
}
else {
  domain = window.location.hostname;
}

http://jsfiddle.net/5U366/4/

7
dmck

Utilisation

document.write(document.location.hostname)​

window.location a un tas de propriétés. Voir ici pour une liste d’entre eux.

6
Dancrumb

Si vous souhaitez un domaine complet, vous pouvez utiliser ceci:

document.location.Origin

Et si vous souhaitez obtenir uniquement le domaine, utilisez ce que vous pouvez:

document.location.hostname

Mais vous avez d'autres options, regardez les propriétés dans:

document.location
5
Ricardo França

Puisque cette question demande le nom de domaine, not nom d’hôte, une réponse correcte doit être fournie.

window.location.hostname.split('.').slice(-2).join('.')

Cela fonctionne pour les noms d’hôtes tels que www.example.com aussi.

4
Ethan

Si vous voulez obtenir le nom de domaine en JavaScript, utilisez simplement le code suivant:

var domain_name = document.location.hostname;
alert(domain_name);

Si vous avez besoin d'un chemin d'URL de page Web pour pouvoir accéder à ce chemin, utilisez cet exemple:

var url = document.URL;
alert(url);
3
ujjal

dans mon cas, la meilleure correspondance est window.location.Origin

2
Pavel Poberezhnyi

Essayez de lancer en script: 

console.log(window.location.hash)

Emplacement ont les valeurs suivantes: 

window.location.hash: ""
​
window.location.Host: "localhost:4200"
​
window.location.hostname: "localhost"
​
window.location.href: "http://localhost:4200/landing"
​
window.location.Origin: "http://localhost:4200"
​
window.location.pathname: "/landing"
​
window.location.port: "4200"
​
window.location.protocol: "http:"
2
Sunil shakya

Qu'en est-il de cette fonction? 

window.location.hostname.match(/\w*\.\w*$/gi)[0]

Cela correspond uniquement au nom de domaine, qu’il s’agisse d’un sous-domaine ou d’un domaine principal.

1
unixdebian11

Je suis nouveau dans JavaScript, mais vous ne pouvez pas utiliser simplement: document.domain ?

Exemple:

<p id="ourdomain"></p>

<script>
var domainstring = document.domain;
document.getElementById("ourdomain").innerHTML = (domainstring);
</script>

Sortie:

domain.com

ou

www.domain.com

En fonction de ce que vous utilisez sur votre site web.

0
UnluckyLuke