2011-11-16 74 views
1

我在我的應用程序使用$.mobile。我必須創建我自己的路由系統。 我綁定hashchange觀察員,我從location.hash中提取有趣的數據。 我有一個問題 - jQuery.mobile去除location.hash井號,如果它有一個斜槓(例如,從'lalal/#controller/action/param''lalal/controller/action/param'$.mobile說,在黃箱Error Loading PagejQuery Mobile的 - onhashchange問​​題

我試圖取消綁定在第一個存在的「hashchange」,但隨後的網頁。不自動加載(我需要)

如何防止哈希值的變化,但jQuery仍然必須自動加載頁面(例如通過在元素中聲明的ID爲data-role='page')?下面是我的路由器類的一個片段(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那裏有一些bug修復hashchange –

+0

最新 - RC3 – abuduba

+0

你的意思是最新的jQuery 1.7和jQueryMobile RC3?只是要注意的jQuery 1.7不受JQM還不支持,所以1.6.4是你應該運行 –

回答

6

我相信你正在打擊的「pushState的」插件在jQuery Mobile的測試版中加入3(我相信)。您可以禁用這個插件用下面的代碼(使用您包括jQuery Mobile的JavaScript文件前):

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

退房的文檔在這裏(注意「pushState的插件」一節):http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html

+1

禁用pushStateEnabled版本會使該井號不再從地址欄中消失 - 確定,但'$ .mobile'仍然嘗試加載網頁使用ajax(只有當散列包含斜線時) - 即使當'$ .mobile.ajaxEnabled = false';當然狀態404和jqm正在觸發頁面加載錯誤 – abuduba

0

在包括jQuery和之前包括jquery.mobile-1.xyjs後您的HTML添加:

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