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.
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
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);
}
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"
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"
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;
}
Utilisation
document.write(document.location.hostname)
window.location
a un tas de propriétés. Voir ici pour une liste d’entre eux.
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
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.
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);
dans mon cas, la meilleure correspondance est window.location.Origin
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:"
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.
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.