jquery, domain, ottieni l'URL


Risposte:


335

Non hai bisogno di jQuery per questo, in quanto basterà un semplice javascript:

alert(document.domain);

Guardalo in azione:

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

Per ulteriori valori relativi al dominio, controlla le proprietà di window.locationonline. Potresti scoprire che location.hostè un'opzione migliore, poiché il suo contenuto potrebbe differire da document.domain. Ad esempio, l'URL http://192.168.1.80:8080avrà solo l'indirizzo IP document.domain, ma sia l'indirizzo IP sia il numero di porta location.host.


7
@ rob.alarcon È una raccomandazione del W3C e ha un supporto molto ampio tra i browser, vecchi e nuovi. L'unico problema che conosco è che alcuni browser ( come Firefox ) ti permetteranno di scrivere su questa proprietà (di sola lettura secondo le specifiche) purché il nuovo valore sia un sottodominio del dominio originale.
Sampson,

4
In realtà consiglierei di usare window.location.host(come pubblicato da Bibby). Ho appena corretto un bug in cui document.domainveniva impostato il dominio principale anziché il sottodominio.
Derek Morrison,

In IE11 document.location.originritorna undefined.
TimothyBuktu,

113

MODIFICARE:

Se non hai bisogno di supportare IE10, puoi semplicemente usare: document.location.origin

Risposta originale, se hai bisogno di supporto legacy

Puoi ottenere tutto questo e altro ispezionando l'oggetto location:

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

così:

location.host 

sarebbe il dominio, in questo caso stackoverflow.com. Per la prima parte completa dell'URL, puoi utilizzare:

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

che in questo caso sarebbe http://stackoverflow.com

Non è richiesto jQuery.



@ Per l'URL completo, perché non utilizzare document.location.originquale risulterà su https://stackoverflow.com . Questo metodo include il protocollo appropriato
Nathileo

33

Simile alla risposta prima che ci sia

location.host

La posizione globale ha anche fatti più divertenti sull'URL attuale. (protocollo, host, porta, nome percorso, ricerca, hash)


20

Se hai bisogno di una stringa, come me, usa questa funzione: funziona davvero.

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

Tuttavia, se nell'URL è presente un sottodominio (ad es. Www.) Verrà restituito con il nome host. Al contrario, se non è presente alcun sottodominio, neanche il nome host ne avrà uno.


@Vova Popov (o qualcuno) potrebbe chiarire l'ultima frase? "www. ar no www."?!?
Randall Cook,

2
Sta dicendo che a.hostname restituirà il www. fa parte del tuo dominio. Quindi, in altre parole, ciò sarebbe falso: getHost('http://www.google.com') == 'google.com'mentre ciò sarebbe vero:getHost('http://google.com') == 'google.com'
Milimetric

9

È possibile utilizzare i codici seguenti per ottenere diversi parametri dell'URL corrente

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

c'è anche un modo per ottenere l'host in cui è ospitato il file js invece del documento? ATM. sto manipolando il lato js file server per ottenere questa stringa di "connessione" che funziona ma sembra inefficace poiché preferirei un file js statico.
yellowsir,

6

jQuery non è necessario, utilizzare javascript semplice:

document.domain

forse non è necessario ma dicendo così che non rispondi alla domanda
Emiliano

Sì, non sono un robot che risponde alla domanda alla lettera. Ho risposto alla domanda pragmaticamente sapendo quale fosse l'obiettivo finale e che non hai bisogno di jQuery per raggiungere l'obiettivo.
Adam,

Capisco ma quel tipo di risposta non è completa, se vuoi puoi fare una risposta migliore
Emiliano

3

document.baseURIti dà il dominio + porta. Viene utilizzato se un tag immagine utilizza un percorso relativo anziché un percorso assoluto. Probabilmente già risolto, ma potrebbe essere utile per altri ragazzi.


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

dominio di secondo livello, è possibile utilizzare

var sleveldomain = parts.slice(-2).join('.');

1

controllare questo

alert(window.location.hostname);

questo restituirà il nome host come www.domain.com


0

per quanto vedo nessuno ha pubblicato la soluzione jquery tranne il codice javascript nativo.

Devi passare l'URL come stringa e otterrà l'host senza usare 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
ma se l'URL non ha già il prefisso, rimuoverà il nome di dominio. Esempio: "stackoveflow.com" diventerà "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 il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.