JavaScript에서 URL의 호스트 이름 부분을 추출하는 방법
전체 URL에서 시작하는 정말 쉬운 방법이 있습니까?
document.location.href = "http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah"
그리고 호스트 부분 만 추출하십시오.
aaa.bbb.ccc.com
이것을 안정적으로 수행하는 JavaScript 함수가 있어야하지만 찾을 수는 없습니다.
이 주소를 가진 페이지가 있다고 가정하십시오 http://sub.domain.com/virtualPath/page.htm
. 이러한 결과를 얻으려면 페이지 코드에서 다음을 사용하십시오.
window.location.host
: 당신은 얻을 것이다sub.domain.com:8080
또는sub.domain.com:80
window.location.hostname
: 당신은 얻을 것이다sub.domain.com
window.location.protocol
: 당신은 얻을 것이다http:
window.location.port
: 당신은 얻을 것이다8080
또는80
window.location.pathname
: 당신은 얻을 것이다/virtualPath
window.location.origin
: 당신은 얻을 것이다http://sub.domain.com
*****
업데이트 : .origin 정보
***** 심판이 말했듯이 브라우저 호환성 window.location.origin
은 명확하지 않습니다. 크롬으로 확인했는데 http://sub.domain.com:port
포트가 80 이외 http://sub.domain.com
의 포트이고 포트가 80이면 반환되었습니다.
저에게 언급 해 주신 @torazaburo에게 감사드립니다.
위치 프로토콜과 호스트를 연결할 수 있습니다.
var root = location.protocol + '//' + location.host;
URL의 경우을 'http://stackoverflow.com/questions'
반환합니다.'http://stackoverflow.com'
사용 document.location
목적과 그 host
또는 hostname
속성.
alert(document.location.hostname); // alerts "stackoverflow.com"
두 가지 방법이 있습니다. 첫 번째는 다른 답변의 변형이지만 기본 포트가 아닌 포트를 설명합니다.
function getRootUrl() {
var defaultPorts = {"http:":80,"https:":443};
return window.location.protocol + "//" + window.location.hostname
+ (((window.location.port)
&& (window.location.port != defaultPorts[window.location.protocol]))
? (":"+window.location.port) : "");
}
그러나이 간단한 방법을 선호합니다 (URI 문자열과 함께 작동).
function getRootUrl(url) {
return url.toString().replace(/^(.*\/\/[^\/?#]*).*$/,"$1");
}
현재 페이지 URL뿐만 아니라 임의의 URL로 작업 할 수 있기를 원했기 때문에 허용 된 답변이 효과가 없었습니다.
URL
객체를 살펴보십시오 .
var url = new URL("http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah");
url.protocol; // "http:"
url.hostname; // "aaa.bbb.ccc.com"
url.pathname; // "/asdf/asdf/sadf.aspx"
url.search; // "?blah"
사용하다
window.location.origin
" http://aaa.bbb.ccc.ddd.com/sadf.aspx?blah "
당신은 얻을 것이다 : http://aaa.bbb.ccc.ddd.com/
시험
document.location.host
또는
document.location.hostname
내가 사용하는 또 다른 해킹이 있으며 StackOverflow 응답에서 본 적이 없습니다. 이미지의 "src"속성을 사용하면 사이트의 전체 기본 경로가 생성됩니다. 예를 들면 다음과 같습니다.
var dummy = new Image;
dummy.src = '$'; // using '' will fail on some browsers
var root = dummy.src.slice(0,-1); // remove trailing '$'
와 같은 URL http://domain.com/somesite/index.html
에서 root
으로 설정됩니다 http://domain.com/somesite/
. 이것은 localhost 또는 유효한 기본 URL에서도 작동합니다.
이로 인해 $
더미 이미지 에 대한 HTTP 요청이 실패 합니다. 약간의 코드 변경만으로 기존 이미지를 대신 사용하여이를 피할 수 있습니다.
또 다른 변형은 HTTP 요청에 부작용없이 더미 링크를 사용합니다.
var dummy = document.createElement ('a');
dummy.href = '';
var root = dummy.href;
그러나 모든 브라우저에서 테스트하지는 않았습니다.
이것을 확인하십시오 :
alert(window.location.hostname);
이것은 호스트 이름을 다음과 같이 반환합니다 www.domain.com
과:
window.location.host
포트와 같은 도메인 이름을 반환합니다 www.example.com:80
전체 참조는 Mozilla 개발자 사이트를 확인 하십시오.
무언가를 지정하고 싶습니다. 누군가 내가 필요한 것처럼 전체 URL을 경로로 얻으려면 다음을 사용할 수 있습니다.
var fullUrl = window.location.protocol + "//" + window.location.hostname + window.location.pathname;
나는 이것이 조금 늦다는 것을 알고 있지만 작은 ES6 구문으로 깨끗한 작은 기능을 만들었습니다.
function getHost(href){
return Object.assign(document.createElement('a'), { href }).host;
}
ES5에서 다음과 같이 쓸 수도 있습니다.
function getHost(href){
return Object.assign(document.createElement('a'), { href: href }).host;
}
물론 IE는을 지원하지 Object.assign
않지만 내 작업 라인에서는 중요하지 않습니다.
정규식은 훨씬 더 많은 유연성을 제공합니다.
//document.location.href = "http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah
//1.
var r = new RegExp(/http:\/\/[^/]+/);
var match = r.exec(document.location.href) //gives http://aaa.bbb.ccc.com
//2.
var r = new RegExp(/http:\/\/[^/]+\/[^/]+/);
var match = r.exec(document.location.href) //gives http://aaa.bbb.ccc.com/asdf
'Programming' 카테고리의 다른 글
대괄호 사이에서 텍스트를 추출하는 정규식 (0) | 2020.02.29 |
---|---|
JavaScript에서 시간을 비교하지 않고 날짜 부분 만 비교 (0) | 2020.02.29 |
UIButton에 여러 줄 텍스트를 어떻게 추가합니까? (0) | 2020.02.29 |
Android Studio : / dev / kvm 기기 권한이 거부되었습니다. (0) | 2020.02.29 |
목록 요소의 가능한 모든 조합을 얻는 방법은 무엇입니까? (0) | 2020.02.29 |