jquery, domínio, obter URL


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.


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.



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


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

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

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.


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('.');

1

verifique isso

alert(window.location.hostname);

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


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

-2
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-z]+.)/,"");
}

-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.