come ottenere l'URL host utilizzando JavaScript dalla pagina corrente


Risposte:


319
var host = window.location.hostname;

o forse

var host = "http://"+window.location.hostname;

o se ti piace la concatenazione

var protocol = location.protocol;
var slashes = protocol.concat("//");
var host = slashes.concat(window.location.hostname);

3
Forse non specificare httpperò. Utilizzare il protocollo relativo. Potrebbe essere più appropriato di quello hard-coding.
Darth Egregious,

33
Usa window.location.host invece del nome host, altrimenti fallirà se la porta non è 80.
Stefan Steiger

1
@MattBrowne Quando lavoro con qualcosa che deve produrre una stringa direi che dovresti sempre usare concat. Nell'esempio var a = 1 + 2 + " should be 12";rispetto alla versione concat di questo var a = "".concat(1).concat(2).concat(" should be 12");. L'uso di concat ti farà risparmiare un sacco di problemi +per il calcolo, non per la concatenazione.
Eric Herlitz,

3
hostnamefornirà solo il dominio e hostfornirà anche la porta. Questo è un mini strumento fantastico per vedere l'anatomia dei collegamenti bl.ocks.org/abernier/3070589
Lukas Liesis

4
window.location.origin funziona bene anche - include il protocollo e la porta.
Rothschild86,

96

Per ottenere il nome host: location.hostname

Ma anche il tuo esempio sta cercando lo schema, quindi location.originsembra fare quello che vuoi in Chrome, ma non viene menzionato nei documenti di Mozdev. Puoi costruirlo con

location.protocol + '//' + location.hostname

Se vuoi anche il numero di porta (per quando non è 80), allora:

location.protocol + '//' + location.host

Firefox 4 non sembra averlo, anche se Chrome 12 lo fa. È definito in una specifica?
Delan Azabani,

Ciao..Per ottenere il porto, l'esempio ha funzionato come un fascino..Grazie per questo
karthik k

FF supporta location.origin dalla 21.0: developer.mozilla.org/en-US/docs/Web/API/Window.location
zifot

67

È possibile ottenere il protocollo, l'host e la porta usando questo:

window.location.origin

Compatibilità del browser

Desktop

| Chrome                           | Edge  | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit)                            |
|----------------------------------|-------|-----------------|-------------------|-------|--------------------------------------------|
| (Yes)                            | (Yes) | (Yes)           | (Yes)             | (Yes) | (Yes)                                      |
| 30.0.1599.101 (possibly earlier) | ?     | 21.0 (21.0)     | 11                | ?     | 7 (possibly earlier, see webkit bug 46558) |

Mobile

| Android                          | Edge  | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile                              |
|----------------------------------|-------|------------------------|----------|--------------|--------------------------------------------|
| (Yes)                            | (Yes) | (Yes)                  | (Yes)    | (Yes)        | (Yes)                                      |
| 30.0.1599.101 (possibly earlier) | ?     | 21.0 (21.0)            | ?        | ?            | 7 (possibly earlier, see webkit bug 46558) |

Tutta la compatibilità del browser proviene da Mozilla Developer Network


4
Dovrei menzionare IE non supporta questo.
Monso,

Ricorda che si tratta di una nuova funzionalità e non supportata dai vecchi browser.
kabirbaidhya,

@kabirbaidhya Che ne dici di compatibilità dettagliata!
Monso

Buona. Ma cosa succede quando i ragazzi MDN aggiornano la tabella di compatibilità del browser, cosa che accade abbastanza spesso con le versioni più recenti del browser. Potrebbe essere necessario continuare ad aggiornare questo per sincronizzare con la loro tabella;).
kabirbaidhya,

Non proprio, questa è la prima versione conosciuta a supportarla, non la più recente e tutti i browser che guardano già la supportano. Ciò cambierebbe solo se decidessero di includere un altro browser in grado di capire i numeri di versione su alcuni dei browser supportati, il che è piuttosto controverso poiché la maggior parte di quelli più recenti provengono dalla loro versione iniziale.
Monso,

7
let path = window.location.protocol + '//' + window.location.hostname + ':' + window.location.port;


5

A seconda delle esigenze, è possibile utilizzare una delle window.locationproprietà. Nella tua domanda stai ponendo domande sull'host , che può essere recuperato usando window.location.hostname(es www.example.com.). Nel tuo esempio stai mostrando qualcosa che si chiama origine , che può essere recuperato usando window.location.origin(es http://www.example.com.).

var path = window.location.origin + "/";

//result = "http://localhost:60470/"

2

Mi piace questo a seconda dello scopo

window.location.href.split("/")[2] == "localhost:17000" //always domain + port

Puoi applicarlo su qualsiasi stringa URL

var url = "http://localhost:17000/sub1/sub2/mypage.html?q=12";
url.split("/")[2] == "localhost:17000"
url.split("/")[url.split("/").length-1] == "mypage.html?q=12"

Rimozione di protocollo, dominio e percorso da url-string (percorso relativo)

var arr = url.split("/");
if (arr.length>3)
   "/" + arr.splice(3, arr.length).join("/") == "/sub1/sub2/mypage.html?q=12"
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.