Obtém o nome de domínio actual com o Javascript (não a localização, etc.)
tenciono comprar dois nomes de domínio para o mesmo site. Dependendo de qual domínio é usado, planeio fornecer dados ligeiramente diferentes na página. Existe uma maneira para eu detectar o nome de domínio real que a página está carregando de modo que eu saiba o que mudar meu conteúdo para?
Procurei por coisas destas, mas a maior parte não funciona como eu queria.por exemplo ao utilizar
document.write(document.location)
Em JSFiddle devolve
Ou seja, o verdadeiro caminho ou seja lá o que for.
http://fiddle.jshell.net/_display/
11 answers
Que tal:
window.location.hostname
O objecto location
tem realmente um número de atributos referindo-se a diferentes partes do URL
Se não estiver interessado no nome da máquina (por exemplo www.beta.example.com
) mas no nome do domínio (por exemplo example.com
), isto funciona para nomes de máquinas válidos:
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;
}
Exemplos
- GetDomain ('[8]} http://www.example.com'); // example.com
GetDomain("www.example.com"); / / example.com
GetDomain ('[14]} http://blog.example.com ', true); / / blog.example.com
GetDomain (localização.href);//..
a versão anterior estava ficando domínio completo (incluindo subdomain). Agora determina o domínio certo dependendo da preferência. De modo que quando um segundo argumento é fornecido como verdadeiro ele irá incluir o subdomínio, caso contrário ele retorna apenas o 'domínio principal'
Se você só está interessado no nome de domínio e quer ignorar o subdomínio, então você precisa analisá-lo para fora de host
e hostname
.
O seguinte código Faz isto:
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;
}
Utilizar
document.write(document.location.hostname)
window.location
tem um monte de propriedades. Veja aqui para uma lista deles.
Você pode obtê-lo a partir de objeto de localização em Javascript facilmente:
Por exemplo, o URL desta página é:
http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc
Então podemos obter o domínio exacto com as seguintes propriedades do objecto de localização:
location.host = "www.stackoverflow.com"
location.protocol= "http:"
Você pode fazer o domínio completo com:
location.protocol + "//" + location.host
Que neste exemplo devolve http://www.stackoverflow.com
Se adicionarmos isto, podemos obter o URL completo e também o caminho com outras propriedades do objecto de localização:
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"
Se desejar uma origem de domínio completo, pode usar isto:
document.location.origin
E se você deseja obter apenas o domínio, use você pode apenas isso:
document.location.hostname
Mas você tem outras opções, dê uma olhada nas propriedades em:
document.location
Uma vez que esta pergunta pede o nome do domínio, NÃO o nome da máquina, uma resposta correcta deve ser
window.location.hostname.split('.').slice(-2).join('.')
Isto funciona para nomes de máquinas como www.example.com também.
Se quiser obter o nome de domínio em JavaScript, basta usar o seguinte código:
var domain_name = document.location.hostname;
alert(domain_name);
Se precisar da localização do URL da página web para poder aceder à localização do URL da web use este exemplo:
var url = document.URL;
alert(url);
Ou pode ver este guia
url.split("/")[2]