So erhalten Sie die Host-URL mithilfe von Javascript von der aktuellen Seite

179

Vorausgesetzt, ich bin auf der folgenden Seite:

http://www.webmail.com/pages/home.aspx

Wie kann ich den Hostnamen ( "http://www.webmail.com") mit JavaScript abrufen ?

karthik k
quelle
3
Mögliches Duplikat von Get host name in JavaScript
T.Todua

Antworten:

316
var host = window.location.hostname;

oder möglicherweise

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

oder wenn Sie Verkettung mögen

var protocol = location.protocol;
var slashes = protocol.concat("//");
var host = slashes.concat(window.location.hostname);
Eric Herlitz
quelle
3
Vielleicht aber nicht angeben http. Verwenden Sie das relative Protokoll. Könnte geeigneter sein als eine hartcodierte.
Darth Egregious
32
Verwenden Sie window.location.host anstelle von Hostname, oder es schlägt fehl, wenn der Port nicht 80 ist.
Stefan Steiger
1
@MattBrowne Wenn Sie mit etwas arbeiten, das eine Zeichenfolge erzeugen soll, sollten Sie immer verwenden concat. Im Beispiel var a = 1 + 2 + " should be 12";gegen die Concat-Version davon var a = "".concat(1).concat(2).concat(" should be 12");. Die Verwendung von concat erspart Ihnen viel Ärger +bei der Berechnung und nicht bei der Verkettung.
Eric Herlitz
3
hostnamegibt nur Domain und hostliefert auch Port. Dies ist ein großartiges Mini-Tool, um den Link Anatomie zu sehen bl.ocks.org/abernier/3070589
Lukas Liesis
4
window.location.origin funktioniert auch gut - es enthält das Protokoll und den Port.
Rothschild86
95

So erhalten Sie den Hostnamen: location.hostname

Ihr Beispiel sucht jedoch auch nach dem Schema, location.originscheint also in Chrome das zu tun, was Sie wollen, wird jedoch in den Mozdev-Dokumenten nicht erwähnt. Sie können es mit konstruieren

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

Wenn Sie auch die Portnummer möchten (wenn es nicht 80 ist), dann:

location.protocol + '//' + location.host
QUentin
quelle
Firefox 4 scheint es nicht zu haben, Chrome 12 jedoch. Ist es in einer Spezifikation definiert?
Delan Azabani
Hallo ... Um den Hafen zu bekommen, hat das Beispiel wie ein Zauber funktioniert ... Danke dafür
karthik k
FF unterstützt location.origin seit 21.0: developer.mozilla.org/en-US/docs/Web/API/Window.location
zifot
67

Sie können das Protokoll, den Host und den Port folgendermaßen abrufen:

window.location.origin

Browser-Kompatibilität

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

Handy, Mobiltelefon

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

Die gesamte Browserkompatibilität erfolgt über das Mozilla Developer Network

Monso
quelle
4
Ich sollte erwähnen, dass IE dies nicht unterstützt.
Monso
Bitte erwähnen Sie, dass es sich um eine neue Funktion handelt, die von alten Browsern nicht unterstützt wird.
Kabirbaidhya
@kabirbaidhya Wie wäre es mit ausführlicher Kompatibilität!
Monso
Gut. Aber was passiert, wenn die MDN-Leute die Browserkompatibilitätstabelle aktualisieren, was bei neueren Browserversionen ziemlich häufig vorkommt? Möglicherweise müssen Sie dies weiter aktualisieren, um mit der Tabelle zu synchronisieren;).
Kabirbaidhya
Nicht wirklich, dies ist die früheste bekannte Version, um sie zu unterstützen, nicht die neueste, und alle Browser, die sie betrachten, unterstützen sie bereits. Dies würde sich nur ändern, wenn sie sich entscheiden, einen anderen Browser einzuschließen, der die Versionsnummern einiger unterstützter Browser ermitteln kann, was etwas umstritten ist, da die meisten neueren Browser aus ihrer ersten Version stammen.
Monso
7
let path = window.location.protocol + '//' + window.location.hostname + ':' + window.location.port;
user3601578
quelle
6

Das sollte funktionieren:

window.location.hostname
GordyD
quelle
oder hostwenn Sie auch Hafen brauchen
Lukas Liesis
4

Abhängig von Ihren Anforderungen können Sie eine der window.locationEigenschaften verwenden. In Ihrer Frage fragen Sie nach dem Host , der mit window.location.hostname(z www.example.com. B. ) abgerufen werden kann . In Ihrem Beispiel zeigen Sie etwas, was als Ursprung bezeichnet wird und mit window.location.origin(z http://www.example.com. B. ) abgerufen werden kann .

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

//result = "http://localhost:60470/"
Mahmoud Salah Eldien Säbel
quelle
2

Ich mag dieses je nach Zweck

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

Sie können es auf jede URL-Zeichenfolge anwenden

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"

Entfernen von Protokoll, Domäne und Pfad aus der URL-Zeichenfolge (relativer Pfad)

var arr = url.split("/");
if (arr.length>3)
   "/" + arr.splice(3, arr.length).join("/") == "/sub1/sub2/mypage.html?q=12"
Gosso
quelle