Получить имя текущего домена с помощью JavaScript (не путь и т. д.)
Я планирую купить два доменных имени для одного сайта. В зависимости от того, какой домен используется, я планирую предоставить немного разные данные на странице. Есть ли способ определить фактическое доменное имя, с которого загружается страница, чтобы я знал, на что изменить свой контент?
Я оглянулся на такие вещи, но большинство из них не работает так, как я хочу.
например, при использовании
document.write(document.location)
on JSFiddle это возвращает
http://fiddle.jshell.net/_display/
т. е. фактический путь или что бы это ни было.
11 ответов
Если вас не интересует имя хоста (например 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', true); / / blog.example.com
- getDomain(расположение.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
имеет кучу свойств. См.здесь для списка из них.
вы можете получить его из объекта местоположения в Javascript легко:
например URL этой страницы:
http://www.stackoverflow.com/questions/11401897/get-the-current-domain-name-with-javascript-not-the-path-etc
тогда мы можем получить точное домен со следующими свойствами объекта, местоположением:
location.host = "www.stackoverflow.com"
location.protocol= "http:"
вы можете сделать полную домена:
location.protocol + "//" + location.host
в этом примере возвращает http://www.stackoverflow.com
Я кроме этого мы можем получить полный URL-адрес, а также путь с другими свойствами объекта, местоположением:
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"
Если вы хотите полный домен origin, вы можете использовать это:
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);