Как получить URL-адрес хоста с использованием JavaScript с текущей страницы


183

Учитывая, что я на следующей странице:

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

Как я могу получить имя хоста ( "http://www.webmail.com") с помощью JavaScript?


3
Возможный дубликат Get host host in JavaScript
T.Todua

Ответы:


319
var host = window.location.hostname;

или возможно

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

или если вам нравится конкатенация

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

3
Может быть, не уточняйте, httpхотя. Используйте соответствующий протокол. Может быть более подходящим, чем жестко закодированный.
Дарт Егрегиус

33
Используйте window.location.host вместо имени хоста, иначе произойдет сбой, если порт не 80.
Stefan Steiger

1
@MattBrowne При работе с чем-то, что приведет к появлению строки, я бы сказал, что вы всегда должны использовать concat. В примере var a = 1 + 2 + " should be 12";против Concat версии этого var a = "".concat(1).concat(2).concat(" should be 12");. Использование concat избавит вас от многих трудностей +для расчета, а не для конкатенации.
Эрик Херлиц

3
hostnameдаст только домен и hostпредоставит порт также. Это отличный мини-инструмент для просмотра ссылки на анатомию bl.ocks.org/abernier/3070589
Lukas Liesis

4
Также хорошо работает window.location.origin - он включает в себя протокол и порт.
rothschild86

96

Чтобы получить имя хоста: location.hostname

Но ваш пример также ищет схему, поэтому, location.originкажется, делает то, что вы хотите в Chrome, но не упоминается в документации Mozdev. Вы можете построить это с

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

Если вам нужен также номер порта (если он не 80), то:

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

В Firefox 4 его нет, хотя в Chrome 12 он есть. Это определено в спецификации?
Делан Азабани

Привет .. Для получения порта, пример работал как шарм .. Спасибо за это
karthik k

FF поддерживает location.origin с 21.0: developer.mozilla.org/en-US/docs/Web/API/Window.location
zifot

67

Вы можете получить протокол, хост и порт, используя это:

window.location.origin

Совместимость браузера

рабочий стол

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

мобильный

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

Все браузеры совместимы с Mozilla Developer Network


4
Я должен отметить, что IE не поддерживает это.
Monso

Пожалуйста, отметьте, что это новая функция и не поддерживается старыми браузерами.
kabirbaidhya

@kabirbaidhya Как насчет подробной совместимости!
Monso

Хорошо. Но что происходит, когда ребята из MDN обновляют таблицу совместимости браузера, что случается довольно часто с новыми версиями браузера. Возможно, вам придется продолжать обновлять это для синхронизации с их таблицей;).
kabirbaidhya

Не совсем, это самые ранние из известных версий, которые поддерживают его, не самые последние, и все браузеры, на которые они смотрят, уже поддерживают его. Это изменило бы только , если они решат включить другой браузер может понять, номера версий на некоторых из поддерживаемых браузеров , которые немного неточный , так как большинство Поздних относятся к их первоначальному выпуску.
Monso



5

В зависимости от ваших потребностей, вы можете использовать одно из window.locationсвойств. В своем вопросе вы спрашиваете о хосте , который может быть получен с помощью window.location.hostname(например www.example.com). В вашем примере вы показываете то, что называется происхождением , которое может быть получено с помощью window.location.origin(например http://www.example.com).

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

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

2

Мне нравится этот в зависимости от цели

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

Вы можете применить его к любой строке 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"

Удаление протокола, домена и пути из строки URL (относительный путь)

var arr = url.split("/");
if (arr.length>3)
   "/" + arr.splice(3, arr.length).join("/") == "/sub1/sub2/mypage.html?q=12"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.