Получить имя текущего домена с помощью JavaScript (не путь и т. д.)


Я планирую купить два доменных имени для одного сайта. В зависимости от того, какой домен используется, я планирую предоставить немного разные данные на странице. Есть ли способ определить фактическое доменное имя, с которого загружается страница, чтобы я знал, на что изменить свой контент?

Я оглянулся на такие вещи, но большинство из них не работает так, как я хочу.

например, при использовании

document.write(document.location)

on JSFiddle it возвращает

http://fiddle.jshell.net/_display/

т. е. фактический путь или что бы это ни было.

11 141

11 ответов:

Как насчет:

window.location.hostname

The location объект на самом деле имеет количество атрибутов ссылаясь на различные части URL

Если вас не интересует имя хоста (например www.beta.example.com), но в доменном имени (например,example.com), это работает для допустимых имен хостов:

function getDomainName(hostName)
{
    return hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1);
}
function getDomain(url, subdomain) {
    subdomain = subdomain || false;

    url = url.replace(/(https?:\/\/)?(www.)?/i, '');

    if (!subdomain) {
        url = url.split('.');

        url = url.slice(url.length - 2).join('.');
    }

    if (url.indexOf('/') !== -1) {
        return url.split('/')[0];
    }

    return url;
}

примеры

предыдущая версия получала полный домен (включая поддомен). Теперь он определяет правильный домен в зависимости от предпочтение. Так что, когда 2-й аргумент предоставляется как true, он будет включать поддомен, в противном случае он возвращает только "основной домен"

Если вас интересует только доменное имя и вы хотите игнорировать поддомен, то вам нужно разобрать его из host и hostname.

следующий код делает это:

var firstDot = window.location.hostname.indexOf('.');
var tld = ".net";
var isSubdomain = firstDot < window.location.hostname.indexOf(tld);
var domain;

if (isSubdomain) {
    domain = window.location.hostname.substring(firstDot == -1 ? 0 : firstDot + 1);
}
else {
  domain = window.location.hostname;
}

http://jsfiddle.net/5U366/4/

использовать

document.write(document.location.hostname)​

window.location имеет кучу свойств. Смотрите здесь для списка из них.

вы можете легко получить его из объекта location в Javascript:

например URL этой страницы:

http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc

тогда мы можем получить точный домен со следующими свойствами объекта location:

location.host = "www.stackoverflow.com"
location.protocol= "http:"

вы можете сделать полную домена:

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

в этом примере возвращает http://www.stackoverflow.com

Я добавление этого мы можем получить полный URL, а также путь с другими свойствами объекта location:

location.href= "http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"    
location.pathname= "questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc"

Если вы хотите полное происхождение домена, вы можете использовать это:

document.location.origin

и если вы хотите получить только домен, использовать вы можете только это:

document.location.hostname

но у вас есть другие варианты, взгляните на недвижимость в:

document.location

Так как этот вопрос запрашивает доменное имя,не имя хоста, правильный ответ должен быть

window.location.hostname.split('.').slice(-2).join('.')

это работает для имен хостов, таких как www.example.com тоже.

Если вы хотите получить доменное имя в JavaScript, просто используйте следующий код:

var domain_name = document.location.hostname;
alert(domain_name);

Если вам нужен URL-адрес веб-страницы, чтобы вы могли получить доступ к URL-адресу веб-страницы, Используйте этот пример:

var url = document.URL;
alert(url);

или см. Данное руководство

для моего случая лучшим совпадением является окно.местоположение.происхождение

Я считаю, что это должно быть так просто:

url.split("/")[2]