실제로이 작업을 수행하는 유일한 방법 (그리고 '실제로 간단한 역사'가이를 수행하는 방법입니다)은 현재 해시를 계속 확인하는 간격을 설정하고 이전과 비교하여 간격을 설정하여 구독자를 변경하도록 구독합니다 해시가 변경되면 발생하는 이벤트입니다. 완벽하지는 않지만 브라우저는이 이벤트를 기본적으로 지원하지 않습니다.
이 답변을 최신 상태로 유지하려면 업데이트하십시오.
jQuery를 사용하는 경우 (오늘날 다소 기초가되어야 함) 멋진 해결책은 jQuery가 제공하는 추상화를 사용하여 이벤트 객체를 사용하여 창 객체에서 hashchange 이벤트를 수신하는 것입니다.
$(window).on('hashchange', function() {
//.. work ..
});
여기서 좋은 점은 해시 체인지 지원에 대해 걱정할 필요가없는 코드를 작성할 수 있지만 다소 덜 알려진 jQuery 기능인 jQuery special events의 형태로 마술을 수행해야한다는 것 입니다.
이 기능을 사용하면 기본적으로 어떤 사람이 처음으로 어떤 방식 으로든 이벤트를 사용하려고 할 때 (예 : 이벤트 바인딩) 이벤트에 대해 일부 설정 코드를 실행하게됩니다.
이 설정 코드에서 기본 브라우저 지원을 확인할 수 있으며 브라우저가 기본적으로이를 구현하지 않는 경우 단일 타이머를 설정하여 변경 사항을 폴링하고 jQuery 이벤트를 트리거 할 수 있습니다.
이것은 코드 가이 지원 문제를 이해해야 할 필요성을 완전히 풀어줍니다.이 종류의 특수 이벤트 구현은 간단합니다 (단순한 98 % 작업 버전을 얻기 위해). 그러나 누군가 다른 사람이 이미 가지고있을 때 왜 그렇게합니까 ?