[javascript] 해시가없는 자바 스크립트 창 위치 href?

나는 가지고있다:

var uri = window.location.href;

제공합니다 http://example.com/something#hash

#hash? 없이 전체 경로를 얻는 가장 쉽고 쉬운 방법은 무엇입니까?

uri    = http://example.com/something#hash
nohash = http://example.com/something

location.origin+location.pathname모든 브라우저에서 작동하지 않는 사용 을 시도했습니다 . 나는 location.protocol+'//'+location.host+location.pathname나에게 일종의 형편없는 해결책처럼 보이는 것을 사용해 보았습니다 .

그렇게하는 가장 좋고 쉬운 방법은 무엇입니까? 어쩌면 나는 location.hash를 쿼리하고 uri에서 이것을 substr ()하려고합니까?



답변

location.protocol+'//'+location.host+location.pathname 포트 번호 또는 쿼리 문자열에 관심이없는 경우 올바른 구문입니다.

관심이 있다면 :

https://developer.mozilla.org/en/DOM/window.location

location.protocol+'//'+
  location.host+
  location.pathname+
 (location.search?location.search:"")

또는

location.protocol+'//'+
  location.hostname+
 (location.port?":"+location.port:"")+
  location.pathname+
 (location.search?location.search:"")

당신은 또한 할 수 있습니다 location.href.replace(location.hash,"")

또는 URL 개체를 만듭니다 .

const url = new URL("https://www.somepage.com/page.hmtl#anchor") //(location.href);
console.log(url)
url.hash="";
console.log(url)


답변

var uri = window.location.href.split("#")[0];

// Returns http://example.com/something

var hash = window.location.hash;

// Returns #hash


답변

location.href.replace(location.hash,"")


답변

보편적 인 방법도 더 작습니까?

location.href.split(/\?|#/)[0]


답변

더 짧은 솔루션 :

  • 쿼리 문자열과 해시없이 location.href.split(location.search||location.hash||/[?#]/)[0]

  • 해시없이 location.href.split(location.hash||"#")[0]

(보통 첫 번째를 사용합니다)


답변