[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괄호 또는 포트 번호가없는 명확한 호스트 이름이 포함되어 있습니다.


답변

Chrome 브라우저에는 위치에 대한 출처 속성이 있습니다. 아래 스크린 샷과 같이 프로토콜에서 포트 번호까지의 전체 도메인을 제공합니다.
크롬 개발자 도구


답변