jquery, домен, отримати URL-адресу


Відповіді:


335

Для цього вам не потрібен jQuery, оскільки достатньо простого javascript:

alert(document.domain);

Дивіться це в дії:

console.log("Output;");  
console.log(location.hostname);
console.log(document.domain);
alert(window.location.hostname)

console.log("document.URL : "+document.URL);
console.log("document.location.href : "+document.location.href);
console.log("document.location.origin : "+document.location.origin);
console.log("document.location.hostname : "+document.location.hostname);
console.log("document.location.host : "+document.location.host);
console.log("document.location.pathname : "+document.location.pathname);

Щоб отримати додаткові значення, пов’язані з доменом, ознайомтеся з властивостями в window.locationІнтернеті. Ви можете виявити, що location.hostце кращий варіант, оскільки його зміст може відрізнятися від document.domain. Наприклад, URL http://192.168.1.80:8080матиме лише ipaddress document.domain, але і ipaddress та номер порту в location.host.


7
@ rob.alarcon Це рекомендація W3C і має дуже широку підтримку серед браузерів, старих і нових. Єдине питання, про яке я знаю, - це те, що деякі браузери ( наприклад, Firefox ) дозволять вам писати в цю властивість (лише для читання за специфікацією), поки нове значення є субдоменом вихідного домену.
Сампсон

4
Я б фактично рекомендував використовувати window.location.host(як опублікував Біббі). Я просто виправив помилку, де document.domainвстановлювався кореневий домен замість субдомену.
Дерек Моррісон

У IE11 document.location.originповертається undefined.
ТимофійБукту

113

Редагувати:

Якщо вам не потрібно підтримувати IE10, ви можете просто скористатися: document.location.origin

Оригінальна відповідь, якщо вам потрібна застаріла підтримка

Ви можете отримати все це та багато іншого, оглянувши об’єкт місцезнаходження:

location = {
  host: "stackoverflow.com",
  hostname: "stackoverflow.com",
  href: "http://stackoverflow.com/questions/2300771/jquery-domain-get-url",
  pathname: "/questions/2300771/jquery-domain-get-url",
  port: "",
  protocol: "http:"
}

так:

location.host 

буде домен, у цьому випадку stackoverflow.com. Для повної першої частини URL-адреси ви можете використовувати:

location.protocol + "//" + location.host

що в цьому випадку буде http://stackoverflow.com

Не потрібно jQuery.



@ Для повного URL-адреси, чому б не використати, document.location.originщо призведе до https://stackoverflow.com . Цей метод включає відповідний протокол
Nathileo

33

Схожа на відповідь, перш ніж є

location.host

У глобальному розташуванні є і цікавіші факти про поточну URL-адресу. (протокол, хост, порт, ім'я шляху, пошук, хеш)


20

Якщо вам потрібен рядок, як я, використовуйте цю функцію - вона справді працює.

function getHost(url)
{
    var a = document.createElement('a');
    a.href = url;
    return a.hostname;
}

Але зауважте, якщо в URL-адресі є субдомен (наприклад, www.), Він повернеться з ім'ям хоста. І навпаки, якщо немає піддомену, ім'я хоста також не буде.


Чи міг би @Vova Popov (чи хтось), будь ласка, уточнити останнє речення? "www. ar no www."?!?
Randall Cook

2
Він каже, що ім’я ім’я поверне www. це частина вашого домену. Іншими словами, це було б помилково: getHost('http://www.google.com') == 'google.com'тоді як це було б правдою:getHost('http://google.com') == 'google.com'
Міліметричний

9

Ви можете використовувати коди нижче, щоб отримати різні параметри Поточна URL-адреса

alert("document.URL : "+document.URL);
alert("document.location.href : "+document.location.href);
alert("document.location.origin : "+document.location.origin);
alert("document.location.hostname : "+document.location.hostname);
alert("document.location.host : "+document.location.host);
alert("document.location.pathname : "+document.location.pathname);

Чи є також спосіб отримати хост, де розміщується файл js замість документа? атм. Я маніпулюю стороною сервера файлових файлів js, щоб отримати цей рядок "з'єднання", який працює, але виглядає неефективно, оскільки я вважаю за краще статичний файл js.
yellowsir

6

jQuery не потрібен, використовуйте простий javascript:

document.domain

можливо, це не потрібно, але говорячи так, що ви не відповідаєте на питання
Емільяно

Так, я не робот, який відповідає на питання буквально. Я відповів на питання прагматично, знаючи, яка кінцева мета, і що вам не потрібен jQuery для досягнення мети.
Адам

Я розумію, але така відповідь не є повною, якщо ви хочете, ви можете зробити кращу відповідь
Еміліано

3

document.baseURIнадає вам домен + порт. Він використовується, якщо тег зображення використовує відносний, а не абсолютний шлях. Напевно, вже вирішено, але це може бути корисно для інших хлопців.


2
var part = location.hostname.split('.');
var subdomains = part.shift();
var upperleveldomains = part.join('.');

домен другого рівня, який ви можете використовувати

var sleveldomain = parts.slice(-2).join('.');

1

Перевір це

alert(window.location.hostname);

це поверне ім'я хоста як www.domain.com


0

наскільки я бачу, ніхто не розміщував рішення jquery, окрім рідного коду JavaScript.

Вам потрібно передати URL як рядок, і він отримає хост без використання regexp.

function getHostFromUrl(urlString) {
    return $a = $('<a>', {
        'href': urlString
    }).prop('host');
}

-2
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-z]+.)/,"");
}

-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}

3
але якщо в URL-адресі вже немає префікса, він видалить доменне ім'я. Приклад: "stackoveflow.com" стане "com"
Філіпіз

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.- Джеймі Завінський
msangel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.