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.