[javascript] location.host와 location.hostname 및 크로스 브라우저 호환성?
이 중 어느 것이 사용자 에이전트가 올바른 도메인을 통해 액세스하는지 확인하는 것보다 가장 효과적인 방법입니다.
웹 브라우저를 사용하여 도메인에 액세스하는 경우 js를 위반하는 경향이있는 작은 js 기반 ‘top bar’스타일 경고를 표시하고 싶습니다.
우리는 다음을 사용하려고 생각했습니다.
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
그것은 우리가 사용하는 모든 하위 도메인을 처리합니다.
어떤 호스트 또는 호스트 이름을 사용해야합니까?
Firefox 5 및 Chrome 12에서 :
console.log(location.host);
console.log(location.hostname);
.. 둘 다 동일하게 표시됩니다.
포트가 실제로 주소 표시 줄에 없기 때문에입니까?
W3Schools 는 호스트에 포트가 있다고 말합니다.
location.host/hostname의 유효성을 검사해야합니까, 아니면 IE6 + 및 다른 모든 것에서도 확실 할 수 있습니까?
답변
작은 메모로 : 대화식 링크 해부
–
간단히 말해서 (의 위치를 가정 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: '');
}
추신 : 기록을 위해, 그것은 실제로 최초의 질문이었습니다. 이미 편집되었습니다 🙂
답변
귀하의 주요 질문에 대한 답변이 위에 있습니다. 방금 사용중인 정규식에 버그가 있음을 지적하고 싶었습니다. 또한 foo-domain.com
하위 도메인이 아닌 경우 에도 성공합니다.domain.com
당신이 정말로 원하는 것은 이것입니다 :
/(^|\.)domain\.com$/
답변
MDN : https://developer.mozilla.org/en/DOM/window.location
두 가지 모두 동일한 결과를 얻을 수 있지만 hostname
괄호 또는 포트 번호가없는 명확한 호스트 이름이 포함되어 있습니다.