복붙노트

[JQUERY] jQuery를 - hashchange 이벤트

JQUERY

jQuery를 - hashchange 이벤트

해결법


  1. 1.브라우저가 이벤트로 지원하는 경우 감지 할 수 있습니다 :

    브라우저가 이벤트로 지원하는 경우 감지 할 수 있습니다 :

    if ("onhashchange" in window) {
      //...
    }
    

    또한보십시오:


  2. 2.,해야 사람이 그것을 필요가 여기에 2017 년 기준으로 업데이트 된 대답은 onhashchange 잘 모든 주요 브라우저에서 지원된다는 점이다. 자세한 내용은 caniuse를 참조하십시오. jQuery를 함께 사용하려면 어떤 플러그인이 필요하지 않습니다 :

    ,해야 사람이 그것을 필요가 여기에 2017 년 기준으로 업데이트 된 대답은 onhashchange 잘 모든 주요 브라우저에서 지원된다는 점이다. 자세한 내용은 caniuse를 참조하십시오. jQuery를 함께 사용하려면 어떤 플러그인이 필요하지 않습니다 :

    $( window ).on( 'hashchange', function( e ) {
        console.log( 'hash changed' );
    } );
    

    때때로 나는 hashbang의 URL 년대 여전히 사용되는 레거시 시스템 건너와이 도움이됩니다. 당신이 새로운 무언가를 구축하고 해시 링크를 사용하는 경우 내가보기 엔 당신이 대신 HTML5 pushState API를 사용하는 것이 좋습니다.


  3. 3.hashchange 플러그 - 인이되는 기능과 여기에 해당 크로스 브라우저 문제를 래핑합니다.

    hashchange 플러그 - 인이되는 기능과 여기에 해당 크로스 브라우저 문제를 래핑합니다.


  4. 4.문제에 대한 다른 접근 ...

    문제에 대한 다른 접근 ...

    방법에 hashchange 이벤트를 바인딩하는 3 가지 방법이 있습니다 :

    <script>
        window.onhashchange = doThisWhenTheHashChanges;
    </script>
    

    또는

    <script>
        window.addEventListener("hashchange", doThisWhenTheHashChanges, false);
    </script>
    

    또는

    <body onhashchange="doThisWhenTheHashChanges();">
    

    윈도우 7에 IE 9, FF 5, 사파리 5, 및 크롬 12이 모든 작업.


  5. 5.모질라 공식 사이트를보십시오 : https://developer.mozilla.org/en/DOM/window.onhashchange

    모질라 공식 사이트를보십시오 : https://developer.mozilla.org/en/DOM/window.onhashchange

    다음과 같이 인용한다 :

    if ("onhashchange" in window) {
        alert("The browser supports the hashchange event!");
    }
    
    function locationHashChanged() {
        if (location.hash === "#somecoolfeature") {
            somecoolfeature();
        }
    }
    
    window.onhashchange = locationHashChanged;
    

  6. 6.난 그냥 (IE7에서 hashchange 이벤트의 부족) 같은 문제 다 퉜다. 내 목적에 적합한 것을 해결 방법은 해시 변화하는 링크의 클릭 이벤트를 결합하는 것이었다.

    난 그냥 (IE7에서 hashchange 이벤트의 부족) 같은 문제 다 퉜다. 내 목적에 적합한 것을 해결 방법은 해시 변화하는 링크의 클릭 이벤트를 결합하는 것이었다.

    <a class='hash-changer' href='#foo'>Foo</a>
    
    <script type='text/javascript'>
    
    if (("onhashchange" in window) && !($.browser.msie)) { 
    
        //modern browsers 
        $(window).bind('hashchange', function() {
            var hash = window.location.hash.replace(/^#/,'');
            //do whatever you need with the hash
        });
    
    } else {
    
        //IE and browsers that don't support hashchange
        $('a.hash-changer').bind('click', function() {
            var hash = $(this).attr('href').replace(/^#/,'');
            //do whatever you need with the hash
        });
    
    }
    
    </script>
    

  7. 7.IE 7 및 IE 9의 경우 한 Statment는 (창에서 "onhashchange")에 대한 사실 줄 것이다 경우 있음하지만 더 나은 매장 해시마다 100 밀리 초 후를 확인할 수 있도록 window.onhashchange 화재, 그 변경하거나하지 않습니다 여부 참고 IE의 모든 버전.

    IE 7 및 IE 9의 경우 한 Statment는 (창에서 "onhashchange")에 대한 사실 줄 것이다 경우 있음하지만 더 나은 매장 해시마다 100 밀리 초 후를 확인할 수 있도록 window.onhashchange 화재, 그 변경하거나하지 않습니다 여부 참고 IE의 모든 버전.

        if (("onhashchange" in window) && !($.browser.msie)) { 
             window.onhashchange = function () { 
                  alert(window.location.hash);             
             }            
             // Or $(window).bind( 'hashchange',function(e) {  
             //       alert(window.location.hash); 
             //   });              
        }
        else { 
            var prevHash = window.location.hash;
            window.setInterval(function () {
               if (window.location.hash != prevHash) {
                  prevHash = window.location.hash;
                  alert(window.location.hash);
               }
            }, 100);
        }
    

  8. 8.어떤 다른 방법으로 대신 해시 이벤트를 사용하고 같은 popstate 듣는 약.

    어떤 다른 방법으로 대신 해시 이벤트를 사용하고 같은 popstate 듣는 약.

    window.addEventListener('popstate', function(event)
    {
        if(window.location.hash) {
                var hash = window.location.hash;
                console.log(hash);
        }
    });
    

    이 방법은 지금까지 시도 대부분의 브라우저에서 잘 작동합니다.


  9. 9.이 작은 jQuery 플러그인 사용에 매우 간단합니다 : https://github.com/finnlabs/jquery.observehashchange/

    이 작은 jQuery 플러그인 사용에 매우 간단합니다 : https://github.com/finnlabs/jquery.observehashchange/


  10. 10.나는 크리스 Coyier 그 해시 문제에 대한 솔루션을 생각하는 그의 스크린 캐스트를 보라 :

    나는 크리스 Coyier 그 해시 문제에 대한 솔루션을 생각하는 그의 스크린 캐스트를 보라 :

    동적 컨텐츠와 모범 사례


  11. 11.기능 기능의 검출 모더 나이저를 사용합니다. 일반적으로 jQuery를 제공에서 브라우저 기능을 감지 : http://api.jquery.com/jQuery.support/합니다. 그러나 hashchange 목록에 없습니다.

    기능 기능의 검출 모더 나이저를 사용합니다. 일반적으로 jQuery를 제공에서 브라우저 기능을 감지 : http://api.jquery.com/jQuery.support/합니다. 그러나 hashchange 목록에 없습니다.

    모더 나이저의 위키는 오래된 브라우저에 HTML5 기능을 추가 할 라이브러리의 목록을 제공합니다. hashchange에 대한 목록은 오래된 브라우저에서 동작을 모방하기를 원한다면 당신이 필요 기능을 제공 할 것 프로젝트 HTML5 역사 API에 대한 포인터를 포함합니다.


  12. 12.@의 johnny.rodgers의 다음 업데이트 된 버전

    @의 johnny.rodgers의 다음 업데이트 된 버전

    희망은 사람을 도움이됩니다.

    // ie9 ve ie7 return true but never fire, lets remove ie less then 10
    if(("onhashchange" in window) && navigator.userAgent.toLowerCase().indexOf('msie') == -1){ // event supported?
        window.onhashchange = function(){
            var url = window.location.hash.substring(1);
            alert(url);
        }
    }
    else{ // event not supported:
        var storedhash = window.location.hash;
        window.setInterval(function(){
            if(window.location.hash != storedhash){
                storedhash = window.location.hash;
                alert(url);
            }
        }, 100);
    }
    
  13. from https://stackoverflow.com/questions/3090478/jquery-hashchange-event by cc-by-sa and MIT license