2011-11-16 4 views
1

내 앱에 $.mobile을 사용하고 있습니다. 내 자신의 라우팅 시스템을 만들어야합니다. 나는 관찰자를 hashchange에 바인딩하고 나는 재미있는 데이터를 location.hash에서 꺼냅니다. I은 ​​문제가 있다면 - 그것은 슬래시가있는 경우 jQuery.mobilelocation.hash에서 해시 기호를 제거합니다 (예 : 'lalal/#controller/action/param'에서 'lalal/controller/action/param'$.mobile에 노란색 상자 Error Loading Page 말한다Jquery mobile - onhashchange 문제

내가 처음에 "hashchange을"기존의 바인딩을 해제하려고했으나 다음 페이지를 참조하십시오. 자동으로로드되지 않습니다. (내가 필요한 것)

해시가 변경되는 것을 방지하려면 어떻게해야합니까?하지만 jQuery는 여전히 (예 : data-role='page'의 요소에 선언 된 ID로) 페이지를 자동으로로드해야합니까? : (Router.load은 변경되지 않습니다. location.hash)

__construct: function() { 

     var that = this; 
     $(window).bind("hashchange" , function(e) { 
      //e.stopImmediatePropagation() 
      that.load(this.location.hash ); 

     }); 
    } 
+1

당신은 실행중인 JQM 및 jQuery를 버전은 무엇? RC1과 RC2에서와 같이 hashxy에 버그가 수정 된 곳 –

+0

최신 버전 - RC3 – abuduba

+0

최신 jQuery 1.7과 jQueryMobile RC3을 의미합니까? jQuery에서 jQuery 1.7은 아직 지원되지 않습니다. 따라서 1.6.4가 실행되어야하는 버전입니다 –

답변

6

나는 당신이 베타 3에 추가 된 jQuery Mobile의 "pushState"플러그인에 맞서 싸우고 있다고 믿습니다 (저는 믿습니다). 여기

$(document).on('mobileinit', function() { 
    $.mobile.pushStateEnabled = false; 
}); 

체크 아웃 문서 (이하 "pushState 플러그인"섹션을주의) : http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html

+1

pushStateEnabled를 비활성화하면 해쉬 기호가 더 이상 주소 표시 줄에서 사라지지 않습니다. 그러나 '$ .mobile'은 여전히 ​​페이지를로드하려고합니다. (물론 해시에 슬래시가있는 경우에만) '$ .mobile.ajaxEnabled = false'를 사용하는 경우에도 물론 상태가 404이고 jqm이 페이지로드 오류를 발생시키는 경우 – abuduba

0

에서 당신은 (당신이 jQuery를 모바일 자바 스크립트 파일을 포함하기 전에 사용) 다음 코드를 사용하여이 플러그인을 사용하지 않도록 설정할 수 있습니다 JQuery와 및 jquery.mobile - 1.xyjs 포함 전에 을 포함 후에 당신의 HTML을 추가

<script> 
$(document).bind("mobileinit", function(){ 
     $.mobile.pushStateEnabled = false; 
     $.mobile.ajaxEnabled = false; 
     $.mobile.hashListeningEnabled = false; 
}); 
</script>