2011-05-06 3 views
1

탐색 용 해시를 사용하는 ajax webapp (JSF 2.0)가 있습니다.IE6/7 뒤로/앞으로 버튼은 window.location.hash를 변경하지 않습니다.

저는 이전 브라우저 (주로 IE6 + 7)에서 값 변경을 확인하기 위해 this answersetInterval()의 도움으로 이벤트 실행과 함께 사용했습니다. 이 작업을 수행

자바 스크립트 코드 :이 잘 작동

window.onload = window.onhashchange = function() { 
    lastHash = window.location.hash; // To save a refresh on browsers that don't need it. 
    var fragment = document.getElementById('fragment'); 
    fragment.value = window.location.hash; 
    fragment.onchange(); 
} 

// Old Browsers That don't support onhashchange... 
var lastHash = window.location.hash; 
function checkFragment() { 
    if (window.location.hash != lastHash) { 
     lastHash = window.location.hash; 
     var fragment = document.getElementById('fragment'); 
     fragment.value = window.location.hash; 
     fragment.onchange(); 
    } 
} 

. 의미, 해시 값을 변경하면 AJAX 앱이 알림 및 업데이트를 가져옵니다. IE 6/7이 작동하지 않는 인스턴스가 하나 있습니다. 뒤로/앞으로 버튼을 누르면 URL 바가 올바른 해시 값으로 업데이트되는 것을 볼 수 있지만 windows.location.hash은 변경되지 않으므로 내 SetEvent() 함수가 변경 사항을 감지하지 못합니다.

누구든지 해결책을 찾았습니까? 감사합니다.

+1

음 ... 내게 자바가 아니라 자바처럼 보입니다. –

답변

2

jQuery Hashchange plugin을 사용하면 IE6/7 호환성 문제를 피할 수 있습니다. code example here을 찾을 수 있습니다. 귀하의 경우 다음과 같이 변경할 수 있습니다.

<script src="jquery.js"></script> 
<script src="jquery-hashchange.js"></script> 
<script> 
    $(function(){ 
     $(window).hashchange(function(){ 
      $('#fragment').val(location.hash).change(); 
     }); 

     $(window).hashchange(); 
    }); 
</script> 
관련 문제