Как получить 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
Quentin
источник
В 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

Monso
источник
4
Я должен отметить, что IE не поддерживает это.
Monso
Пожалуйста, отметьте, что это новая функция и не поддерживается старыми браузерами.
kabirbaidhya
@kabirbaidhya Как насчет подробной совместимости!
Monso
Хорошо. Но что происходит, когда ребята из MDN обновляют таблицу совместимости браузера, что случается довольно часто с новыми версиями браузера. Возможно, вам придется продолжать обновлять это для синхронизации с их таблицей;).
kabirbaidhya
Не совсем, это самые ранние из известных версий, которые поддерживают его, не самые последние, и все браузеры, на которые они смотрят, уже поддерживают его. Это изменило бы только , если они решат включить другой браузер может понять, номера версий на некоторых из поддерживаемых браузеров , которые немного неточный , так как большинство Поздних относятся к их первоначальному выпуску.
Monso
7
let path = window.location.protocol + '//' + window.location.hostname + ':' + window.location.port;
user3601578
источник
6

Это должно работать:

window.location.hostname
GordyD
источник
или hostесли вам также нужен порт
Lukas Liesis
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"
Госсо
источник