Получить имя текущего домена с помощью JavaScript (не путь и т. д.)
Я планирую купить два доменных имени для одного сайта. В зависимости от того, какой домен используется, я планирую предоставить немного разные данные на странице. Есть ли способ определить фактическое доменное имя, с которого загружается страница, чтобы я знал, на что изменить свой контент?
Я оглянулся на такие вещи, но большинство из них не работает так, как я хочу.
например, при использовании
document.write(document.location)
on JSFiddle it возвращает
http://fiddle.jshell.net/_display/
т. е. фактический путь или что бы это ни было.
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; }
примеры
- getDomain ( ' http://www.example.com'); // example.com
- getDomain('www.example.com'); // example.com
- getDomain ( ' http://blog.example.com', правда); // blog.example.com
- getDomain (location.href); // ..
предыдущая версия получала полный домен (включая поддомен). Теперь он определяет правильный домен в зависимости от предпочтение. Так что, когда 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; }
использовать
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);