як отримати URL-адресу хоста за допомогою JavaScript з поточної сторінки


182

Враховуючи, що я перебуваю на наступній сторінці:

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

Як я можу отримати ім'я хоста ( "http://www.webmail.com") за допомогою JavaScript?


3
можливий дублікат Get host name в JavaScript
T.Todua

Відповіді:


318
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.
Стефан Штайгер

1
@MattBrowne Працюючи з тим, що створює рядок, я б сказав, що ви завжди повинні користуватися concat. У прикладі var a = 1 + 2 + " should be 12";проти короткої версії цього var a = "".concat(1).concat(2).concat(" should be 12");. Використання concat допоможе вам заощадити багато клопоту +з розрахунком, а не конкатенацією.
Ерік Герліц

3
hostnameдасть лише домен і hostнадасть також порт. Це чудовий міні-інструмент, щоб побачити посилання на анатомію bl.ocks.org/abernier/3070589
Лукас Ліесіс

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


4
Варто зазначити, що IE це не підтримує.
Монсо

Зауважте, що це нова функція, яка не підтримується старими браузерами.
kabirbaidhya

@kabirbaidhya Як щодо вербальної сумісності!
Монсо

Добре. Але що відбувається, коли хлопці MDN оновлюють таблицю сумісності браузера, що трапляється досить часто з новими версіями браузера. Можливо, вам доведеться продовжувати оновлювати це, щоб синхронізувати їх таблицю;).
kabirbaidhya

Насправді це найдавніші версії, які підтримують її не найновіші, і всі браузери, на які вони дивляться, вже підтримують її. Це зміниться лише в тому випадку, якщо вони вирішать включити інший веб-переглядач, який може визначити номери версій у деяких підтримуваних браузерах, що дещо суперечить, оскільки більшість нових є з початкового випуску.
Монсо



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.