местоположение.хост против местоположения.имя хоста и кросс-браузерная совместимость?
какой из них является наиболее эффективным против проверки, если агент пользователя получает доступ через правильный домен.
мы хотели бы показать небольшое предупреждение стиля "top bar" на основе js, если они обращаются к домену с помощью какого-то веб-прокси (поскольку он имеет тенденцию нарушать js).
мы думали об использовании следующие:
var r = /.*domain.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Это позаботится о любых поддоменах, которые мы когда-либо использовали.
что мы должны использовать host или имя?
в Firefox 5 и Chrome 12:
console.log(location.host);
console.log(location.hostname);
.. показывает то же самое для обоих.
Это потому что порт на самом деле не в адресной строке?
W3Schools говорит хост содержит порт.
стоит месте.хост / имя хоста должны быть проверены или мы можем быть уверены, что в IE6+ и все остальные будут существовать?
6 ответов:
как маленькая памятка: the интерактивная Анатомия ссылок
--
короче говоря (предполагая расположение
http://example.org:8888/foo/bar#bang
):
hostname
даетexample.org
host
даетexample.org:8888
хост просто включает номер порта, если он указан. Если в URL-адресе нет номера порта, то он возвращает то же самое, что и имя хоста. Вы выбираете, хотите ли вы соответствовать номеру порта или нет. См.https://developer.mozilla.org/en/window.location для получения дополнительной информации.
Я бы предположил, что вы хотите имя хоста, чтобы просто получить имя сайта.
Если вы настаиваете на использовании
window.location.origin
Вы можете поместить это в верхней части кода перед чтениемorigin
if (!window.location.origin) { window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: ''); }
PS: для записи, это был на самом деле оригинальный вопрос. Вероятно, они уже отредактировали его. :)
основной вопрос был дан ответ выше. Я просто хотел отметить, что регулярное выражение, которое вы используете, имеет ошибку. Он также будет успешным на
foo-domain.com
, который не является поддоменомdomain.com
чего вы действительно хотите это:
/(^|\.)domain\.com$/
MDN:https://developer.mozilla.org/en/DOM/window.location
похоже, что вы получите тот же результат для обоих, но
hostname
содержит чистое имя хоста без скобок или номер порта.