2009-07-24 2 views
1

브라우저에 임의의 HTML 페이지를로드했다고 가정 해 봅시다. 그런 다음 주소 표시 줄에 "# anchor-name"을 추가하고 Enter 키를 누릅니다.Javascript가 앵커를 현재 위치에 수동으로 추가하는 것을 감지 할 수 있습니까?

앵커를 추가하고 다른 페이지를 호출하지 않았기 때문에 브라우저는 서버를 다시 호출하지 않습니다. 따라서 onLoad 이벤트 등은 없습니다.

그럼에도 불구하고 페이지의 일부 자바 스크립트가이 동작을 감지 할 수 있습니까? 방법? 무슨 사건이야?

나는 대답이 "아니오"라고 생각합니다. 제 잘못을 증명해주세요.

감사

참고 : URL에는 쿼리 문자열이없는 가정하십시오. "/index.html"또는 "/"로 끝납니다.

관련 질문 : "anchor-name"이라는 앵커가 페이지에 실제로 있으면 중요합니까?

답변

4

IE8은 찾고있는 이벤트 인 onhashchange입니다.

나머지 브라우저의 경우 "공통"기술은 해시를 정기적으로 확인하여 해시가 마지막으로 호출 된 이후 변경되었는지 확인하고 작업을 수행하는 코드 조각을 setInterval을 사용하여 설정하는 것입니다 있다면. 그러나 This articlesetInterval에 의존하지 않는 onhashchange에 대한 솔루션을 제공하지만 안정적으로 사용하기에는 너무 거추장스러운 것으로 보입니다. 난 그냥 모든 브라우저 setInterval에 충실 것 : 제공되는 해시에 어떤 요소가 없다면

var hash = window.location.hash; 
setInterval(function() { 
    if(hash != window.location.hash) { 
     hashChanged(); 
     hash = window.location.hash; 
    } 
}, 2000); // 2 second timer, should be fine 

그것은 중요하지 않습니다.

+3

setInterval()이 최상의 옵션처럼 보입니다. 감사. 참조 된 기사는 onScroll 이벤트를 사용합니다. 꽤 똑똑한 반면 실제로 존재하는 올바른 이름의 앵커가 필요합니다. 따라서 임의의 앵커 이름을 지원해야하는 경우에는 가능하지 않습니다. 나는 단지 후손을 위해 그것을 메모 할 것이라고 생각했다. – mcqwerty

관련 문제