Как получить 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.