최근 javascript코딩을 하다보면, hash처리가 상당히 유용하게 사용됩니다.

javascript로 그린 게시판을 예로 들면, 페이지 번호로 url을 찾기가 어렵다거나 하는 문제가 생기죠.

그래서 hash를 많이 사용하고,

hashchange 이벤트도 유용하게 사용됩니다.

하지만 문제는 any브라우징입니다.

MS에서 친히 만드신 IE7 이하 버전에서는  hashchange 이벤트가 잡히지 않기 때문입니다.
(혹시 제가 잘못 알고 있다면, 댓글로 알려주시면 감사..^^;;)

그리하여, setInterval 을 사용하여, 주기적으로 hash값을 체크하는 방법으로 처리해 버렸습니다.

무한루프 같은 느낌이어서, 좀 마음에 걸리기는 하지만, (0.5초 간격으로 체크시에) 실제로 사용하는 cpu사용량에는 별 문제가 없기에 다음과 같이 처리 했습니다.

더 좋은 방법이 있으신 분은 트랙백으로 공유 부탁드리겠습니다.


 코드는 아래와 같습니다.

if (window.addEventListener ) {

window.addEventListener('hashchange', function() {

해쉬 이벤트 발생시 처리할 함수();

},false);

} else if (window.attachEvent) {

this.beforeHash = location.hash;

// 0.5초 간격으로 hash값 체크

setInterval(function() {

if (beforeHash==location.hash) return;

해쉬이벤트시 처리할 함수();

beforeHash = location.hash;   // beforeHash는 전역변수..

},500);

}

+ Recent posts

티스토리 툴바