Ответ 1
Как насчет:
window.location.hostname
Объект location
фактически имеет количество атрибутов, относящихся к различным частям URL
Я планирую купить два доменных имени для одного и того же сайта. В зависимости от того, какой домен используется, я планирую предоставить несколько разные данные на странице. Есть ли способ определить фактическое имя домена, на которое загружается страница, чтобы я знал, что изменить свой контент?
Я искал такие вещи, но большинство из них не работает так, как я хочу.
Например, при использовании
document.write(document.location)
on JSFiddle он возвращает
http://fiddle.jshell.net/_display/
то есть. фактический путь или что-то еще.
Как насчет:
window.location.hostname
Объект 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;
}
<сильные > Примеры
Предыдущая версия получила полный домен (включая субдомен). Теперь он определяет правильный домен в зависимости от предпочтения. Таким образом, когда второй аргумент предоставляется как истинный, он будет включать субдомен, иначе он возвращает только "основной домен"
Вы можете легко получить его из объекта местоположения в 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"
Если вас интересует только доменное имя и вы хотите игнорировать субдомен, вам необходимо проанализировать его из 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
имеет кучу свойств. См. здесь для их списка.
Если вы хотите получить полное доменное происхождение, вы можете использовать это:
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-адреса веб-страницы, чтобы вы могли получить доступ к URL-адресу веб-URL, используйте этот пример:
var url = document.URL;
alert(url);
для моего случая наилучшее соответствие - window.location.origin
Я полагаю, что это должно быть так просто:
url.split("/")[2]
Как насчет этой функции?
window.location.hostname.match(/\w*\.\w*$/gi)[0]
Это будет соответствовать только имени домена, независимо от того, является ли он поддоменом или основным доменом.
Я новичок в JavaScript, но вы не можете просто использовать: document.domain?
Пример:
<p id="ourdomain"></p>
<script>
var domainstring = document.domain;
document.getElementById("ourdomain").innerHTML = (domainstring);
</script>
Выход:
domain.com
или же
www.domain.com
В зависимости от того, что вы используете на своем сайте.