jquery, domínio, obter URL

140

Como posso obter o nome de domínio com jquery?

AlexC
fonte

Respostas:

335

Você não precisa do jQuery para isso, pois o javascript simples será suficiente:

alert(document.domain);

Veja em ação:

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);

Para outros valores relacionados ao domínio, confira as propriedades do window.locationonline. Você pode achar que location.hosté uma opção melhor, pois seu conteúdo pode diferir document.domain. Por exemplo, o URL http://192.168.1.80:8080terá apenas o endereço ip document.domain, mas o endereço ip e o número da porta location.host.

Sampson
fonte
7
@ rob.alarcon É uma recomendação do W3C e possui amplo suporte entre navegadores, antigos e novos. O único problema que conheço é que alguns navegadores ( como o Firefox ) permitirão que você escreva nesta propriedade (somente leitura por especificação), desde que o novo valor seja um subdomínio do domínio original.
Sampson
4
Na verdade, eu recomendaria o uso window.location.host(como publicado no bibby). Eu apenas corrigi um bug no qual document.domainestava sendo definido o domínio raiz em vez do subdomínio.
Derek Morrison
No IE11 document.location.originretorna undefined.
TimothyBuktu
113

EDITAR:

Se você não precisa oferecer suporte ao IE10, pode simplesmente usar: document.location.origin

Resposta original, se você precisar de suporte legado

Você pode obter tudo isso e muito mais inspecionando o objeto de localização:

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:"
}

tão:

location.host 

seria o domínio, neste caso, stackoverflow.com. Para a primeira parte completa do URL, você pode usar:

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

que neste caso seria http://stackoverflow.com

Não é necessário jQuery.

superluminário
fonte
relacionada stackoverflow.com/questions/6549117/...
Adrien Seja
@ Para o URL completo, por que não usar o document.location.originque resultará em https://stackoverflow.com . Este método inclui o protocolo apropriado
Nathileo
33

Semelhante à resposta antes que exista

location.host

O local global também apresenta mais fatos interessantes sobre o URL atual. (protocolo, host, porta, nome do caminho, pesquisa, hash)

babado
fonte
20

Se você precisar de uma string, como eu, use esta função - ela realmente funciona.

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

Mas observe que, se houver um subdomínio (por exemplo, www.) Na URL, ele será retornado com o nome do host. Por outro lado, se não houver subdomínio, o nome do host também não terá um.

Vova Popov
fonte
@Vova Popov (ou alguém) poderia esclarecer a última frase? "www. ar no www."?!?
Randall Cook
2
Ele está dizendo que a.hostname retornará o www. isso faz parte do seu domínio. Portanto, em outras palavras, isso seria falso: getHost('http://www.google.com') == 'google.com'enquanto isso seria verdade:getHost('http://google.com') == 'google.com'
Milimetric 27/12/12
9

Você pode usar os códigos abaixo para obter diferentes parâmetros do URL atual

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
fonte
existe também uma maneira de obter o host em que o arquivo js está hospedado em vez do documento? atm. Estou manipulando o lado do servidor de arquivos js para obter essa string de "conexão" que funciona, mas parece ineficaz, pois eu preferiria um arquivo js estático.
Yellowsir #
6

jQuery não é necessário, use javascript simples:

document.domain
Adão
fonte
talvez não seja preciso, mas dizendo como que você não está responder à pergunta
Emiliano
Sim, eu não sou um robô que responde a pergunta literalmente. Respondi à pergunta sabendo pragmaticamente qual era o objetivo final e que você não precisa do jQuery para atingir o objetivo.
Adam
Eu entendo, mas que tipo de resposta não está completa, se você quiser, pode fazer uma resposta melhor
Emiliano
3

document.baseURIfornece o domínio + porta. É usado se uma tag de imagem usa um caminho relativo, em vez de absoluto. Provavelmente já está resolvido, mas pode ser útil para outros caras.

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

domínio de segundo nível, você pode usar

var sleveldomain = parts.slice(-2).join('.');
Muhammad Mohsin Muneer
fonte
1

verifique isso

alert(window.location.hostname);

isso retornará o nome do host como www.domain.com

code.rider
fonte
0

até onde eu vejo ninguém postou a solução jquery, mas o código javascript nativo.

Você precisa passar o URL como uma string e ele obterá o host sem usar o regexp.

function getHostFromUrl(urlString) {
    return $a = $('<a>', {
        'href': urlString
    }).prop('host');
}
Zoltán Süle
fonte
-2
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-z]+.)/,"");
}
Gubatron
fonte
-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}
Gubatron
fonte
3
mas se o URL já não tem o prefixo, ele irá remover o nome de domínio .. Exemplo: "stackoveflow.com" irá tornar-se "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