JavaScript에서 매개 변수없이 URL을 얻는 방법은 무엇입니까?


176

내가 사용하는 경우 :

alert(window.location.href);

쿼리 문자열을 포함한 모든 것을 얻습니다. 기본 URL 부분을 얻는 방법이 있습니까?

http://mysite.com/somedir/somefile/

대신에

http://mysite.com/somedir/somefile/?foo=bar&loo=goo

답변:


283

이것은 가능하지만 location객체 에서 수동으로 빌드해야 합니다 .

location.protocol + '//' + location.host + location.pathname

14
IE6을 포함한 모든 최신 브라우저는 현재 프로토콜을 자동으로 상속하므로 location.protocol을 제공 할 필요는 없습니다. 즉 :'//' + location.host + location.pathname
JonnyReeves

10
@JonnyReeves 현재 문서에서 사용하고 있다면, 이것이 사실입니다. 좋은 지적입니다. URL을 일반 텍스트로 출력하는 경우와 같이 필요할 수 있습니다.
lonesomeday

1
@lonesomeday 귀하의 답변은 그것이 유일한 방법임을 암시합니다.
Oddman

5
포트가 누락되어 페이지에 대한 잘못된 결과를 반환합니다.http://www.example.com:8080/asdf.html?foo=bar
izogfif

3
당신과 함께 몇 가지 문자를 저장할 수 있습니다 location.origin내가 izogfif의 우려 @ 또한 주소를 믿습니다.
코더

171

모든 대답은 다소 복잡합니다. 여기:

var url = window.location.href.split('?')[0];

경우에? 존재하지 않으면 여전히 첫 번째 인수를 반환합니다. 첫 번째 인수는 전체 URL에서 검색어 문자열을 뺀 것입니다.

또한 프로토콜에 구애받지 않으므로 ftp, itunes.etc와 같은 용도로도 사용할 수 있습니다.


39
앵커를 제거해야하는 경우window.location.href.split(/[?#]/)[0];
Bahattin Ungormus

실제로 모든 대답은 다소 복잡하다
mehmet

당신이 더 간단한 접근 방식을 가지고 있다면 @mehmet 모든 귀 :)
Oddman

1
@Oddman, 나는 그때 내가 생각했던 것을 절대로 기억하지 못하지만, 그것이 긍정적 인 진술 일 수 있다고 생각합니다 :))
mehmet

이 답변이 허용 된 것으로 표시된 것보다 더 나은 이유는 무엇입니까?
Vishal--JAVA--CQ

16

사용하다 indexOf

var url = "http://mysite.com/somedir/somefile/?aa";

if (url.indexOf("?")>-1){
url = url.substr(0,url.indexOf("?"));
}

5
var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"    

url.substring(0,url.indexOf("?"));

3
이는 해당 매개 변수가 정의 된 것으로 가정합니다. 훨씬 더 나은url.split('?')[0]
actimel

5

정규식을 사용할 수 있습니다. window.location.href.match(/^[^\#\?]+/)[0]


5

을 연결 origin하고 pathname, 같은 포트 example.com:80가 있으면 포함시킬 수도 있습니다.

location.origin + location.pathname

2

문서 를 보면 window객체 에서 관심있는 속성 만 취할 수 있습니다.

protocol + '//' + hostname + pathname
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.