2011-11-16 78 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>