jQuery를 사용하여 URL에서 앵커를 얻는 방법은 무엇입니까?


184

다음과 같은 URL이 있습니다.

www.example.com/task1/1.3.html#a_1

a_1jQuery를 사용하여 앵커 값을 가져 와서 변수로 저장할 수 있습니까?

답변:


207

다음 .indexOf().substring()같이 and 를 사용할 수 있습니다 .

var url = "www.aaa.com/task1/1.3.html#a_1";
var hash = url.substring(url.indexOf("#")+1);

당신은 여기에서 그것을 시도를 제공 할 수 있습니다 그것은이 없을 수 있다면, #그것에을 수행 if(url.indexOf("#") != -1)과 같이 체크를 :

var url = "www.aaa.com/task1/1.3.html#a_1", idx = url.indexOf("#");
var hash = idx != -1 ? url.substring(idx+1) : "";

현재 페이지 URL 인 경우 URL window.location.hash을 가져 와서 #원하는 경우 바꿀 수 있습니다.


10
참고 : iFrame 내부에서 기본 창의 해시 값을 얻으려면 window.top.location.hash대신 사용해야 합니다.
Paolo Stefan

1
url.split("#").pop() -느리지 만 쉽습니다.
Ifch0o1 2019

490

들어 현재 창 , 당신은이를 사용할 수 있습니다 :

var hash = window.location.hash.substr(1);

기본 창의 해시 값을 얻으려면 다음을 사용하십시오.

var hash = window.top.location.hash.substr(1);

URL / 해시가 포함 된 문자열이있는 경우 가장 쉬운 방법은 다음과 같습니다.

var url = 'https://www.stackoverflow.com/questions/123/abc#10076097';
var hash = url.split('#').pop();

jQuery를 사용하는 경우 다음을 사용하십시오.

var hash = $(location).attr('hash');

1
우아한 대답. 이것이 작동하지 않는 경우가 있습니까?
sscirrus

2
바로 가기 버전 var hash = window.location.hash.substr(1);-JS는 substr / substring 함수를 모두 가지고 있기 때문에 서로 다르지만이 경우에는 동일합니다.
Arthur Kushman

변경 사항을 추적하는 가장 좋은 방법은 무엇입니까? 누군가 내부 페이지 링크를 클릭 했습니까?
Rid Iculous

5
@RidIculous 이것을 시도하십시오 : $ (window) .on ( 'hashchange', function () {$ ( 'h1'). text (location.hash.slice (1));});
Silvio Delgado

71

사용하다

window.location.hash

#을 포함한 모든 것을 검색


15
location.hash.slice(1)최종 문자열에 해시 태그를 원하지 않으면 사용하십시오 !
Sandy Gifford

39

jQuery 스타일 :

$(location).attr('hash');

7
모든 자바 스크립트 문제를 jquery로 해결할 필요는 없습니다.
doxin

22
@doxin 동의하지만 문제는 "jQuery를 사용하여 URL에서 앵커를 얻는 방법"입니다.
Valentin E

10

당신은 구문 분석하기 위해 다음과 같은 "속임수"를 사용할 수 있는 유효한 URL을. 그것은 이용합니다 앵커 요소 의 특별한 href가 관련 속성을 hash.

jQuery로

function getHashFromUrl(url){
    return $("<a />").attr("href", url)[0].hash.replace(/^#/, "");
}
getHashFromUrl("www.example.com/task1/1.3.html#a_1"); // a_1

일반 JS로

function getHashFromUrl(url){
    var a = document.createElement("a");
    a.href = url;
    return a.hash.replace(/^#/, "");
};
getHashFromUrl("www.example.com/task1/1.3.html#a_1"); // a_1

3

일반 URL 문자열 만 있고 (해시 속성이없는 경우) 정규식을 사용할 수도 있습니다.

var url = "www.example.com/task1/1.3.html#a_1"  
var anchor = url.match(/#(.*)/)[1] 

1
일치하는 요소가 두 번째 요소에 액세스하기 전에 결과가 표시되는지 확인해야합니다. 그렇지 않으면 URL에 앵커가없는 경우이 코드에서 오류가 발생합니다.
Richard Garside
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.