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.orghost너에게 준다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 브라우저에는 위치에 대한 출처 속성이 있습니다. 아래 스크린 샷과 같이 프로토콜에서 포트 번호까지의 전체 도메인을 제공합니다.
'Programming' 카테고리의 다른 글
| 글꼴 멋진 아이콘의 아이콘 색상, 크기 및 그림자 스타일을 지정하는 방법 (0) | 2020.03.04 |
|---|---|
| C #에서 현재 실행 파일의 이름을 어떻게 얻습니까? (0) | 2020.03.04 |
| vim에서 탭을 공백으로 바꿉니다. (0) | 2020.03.04 |
| 내 응용 프로그램에 "암호화가 포함되어 있습니까?" (0) | 2020.03.04 |
| Windows에서 Git : mergetool을 어떻게 설정합니까? (0) | 2020.03.04 |
