jak uzyskać adres URL hosta za pomocą javascript z bieżącej strony


Odpowiedzi:


318
var host = window.location.hostname;

lub ewentualnie

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

lub jeśli lubisz konkatenację

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

3
Może nie precyzuj http. Użyj protokołu względnego. Może być bardziej odpowiednie niż kodowanie na stałe.
Darth Egregious

33
Użyj window.location.host zamiast nazwy hosta, inaczej zakończy się niepowodzeniem, jeśli port nie ma 80.
Stefan Steiger

1
@MattBrowne Pracując z czymś, co powinno wytworzyć ciąg, powiedziałbym, że zawsze powinieneś go używać concat. W przykładzie var a = 1 + 2 + " should be 12";vs wersja konkat tego var a = "".concat(1).concat(2).concat(" should be 12");. Korzystanie z konkat pozwoli ci zaoszczędzić wiele problemów +związanych z obliczeniami, a nie konkatenacją.
Eric Herlitz,

3
hostnamepoda tylko domenę i hostzapewni również port. To świetne mini narzędzie do obejrzenia anatomii linków bl.ocks.org/abernier/3070589
Lukas Liesis

4
window.location.origin również działa dobrze - zawiera protokół i port.
rothschild86

96

Aby uzyskać nazwę hosta: location.hostname

Ale twój przykład również szuka schematu, więc location.originwydaje się robić to, co chcesz w Chrome, ale nie pojawia się w dokumentach Mozdeva. Możesz to zbudować za pomocą

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

Jeśli chcesz również numer portu (jeśli nie jest to 80), to:

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

Wydaje się, że Firefox 4 go nie ma, chociaż Chrome 12 tak. Czy jest to zdefiniowane w specyfikacji?
Delan Azabani,

Cześć .. Dla uzyskania portu, przykład działał jak urok .. Dzięki za to
karthik k

FF obsługuje location.origin od 21.0: developer.mozilla.org/en-US/docs/Web/API/Window.location
zifot

67

Możesz uzyskać protokół, host i port, używając tego:

window.location.origin

Kompatybilność z przeglądarkami

Pulpit

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

mobilny

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

Cała kompatybilność przeglądarki pochodzi z Mozilla Developer Network


4
Powinienem wspomnieć, że IE tego nie obsługuje.
Monso,

Proszę wspomnieć, że jest to nowa funkcja, która nie jest obsługiwana przez stare przeglądarki.
kabirbaidhya

@kabirbaidhya Co powiesz na pełną kompatybilność!
Monso,

Dobry. Ale co się stanie, gdy faceci MDN zaktualizują tabelę zgodności przeglądarki, co zdarza się dość często w przypadku nowszych wersji przeglądarki. Być może będziesz musiał aktualizować to, aby zsynchronizować z ich tabelą;).
kabirbaidhya

Nie bardzo, to najwcześniejsze znane wersje, które go obsługują, a nie najnowsze, a wszystkie przeglądarki, na które patrzą, już go obsługują. Zmieniłoby się to tylko wtedy, gdyby zdecydowali się dołączyć inną przeglądarkę, która może ustalić numery wersji na niektórych obsługiwanych przeglądarkach, co jest nieco dyskusyjne, ponieważ większość nowszych pochodzi z ich początkowej wersji.
Monso,



5

W zależności od potrzeb możesz użyć jednej z window.locationwłaściwości. W swoim pytaniu pytasz o hosta , który można odzyskać za pomocą window.location.hostname(np www.example.com.). W twoim przykładzie pokazujesz coś, co nazywa się origin , które można odzyskać za pomocą window.location.origin(np http://www.example.com.).

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

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

2

Podoba mi się ten w zależności od celu

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

Możesz zastosować go na dowolnym ciągu adresu 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"

Usuwanie protokołu, domeny i ścieżki z ciągu url (ścieżka względna)

var arr = url.split("/");
if (arr.length>3)
   "/" + arr.splice(3, arr.length).join("/") == "/sub1/sub2/mypage.html?q=12"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.