移动设备的后退按钮不起作用 - 使用jquerymobile 1.0 RC2的backbone.js 0.5.3

时间:2011-11-11 22:41:21

标签: jquery-mobile backbone.js back router

使用triggerRoute = true;导航方法时,页面可以很好地导航到新页面,但历史记录不会更新。

点击Android设备(Nexus S)上的后退按钮时,会弹出历史记录,但导航不会发生。

如果我为false传递triggerRoute然后调用Backbone.history.loadUrl();那么后退按钮确实有效,但有点不正常。

导航方法有这个评论......

// URL-encoding the fragment in advance. This does not trigger
// a `hashchange` event.

在阅读了几篇帖子后,在我看来,使用导航方法是正确的方法,应该更新历史......

代码段......

er.getApp().getController().navigate('home', true);

OR

er.getApp().getController().navigate('home');
Backbone.history.loadUrl();

是否存在jquerymobile和骨干组合的已知路由问题。这里较旧的答案与早期版本的backbone.js有关,不再有效......

1 个答案:

答案 0 :(得分:1)

确定。找到了解决方案。基本上告诉jquerymobile不要对后退按钮和hashchange事件做任何事情,让骨干完全处理它。

在index.html,appLoading事件处理程序中,有代码将Jquerymobile绑定到后退按钮,将其删除。

//removed this part
document.addEventListener("backbutton", function(){
              if (window.history.length > 0) {
                  window.history.back();
                  return false;
              }
              navigator.app.exitApp();
}, true);

// Since we are using the backbone router we want to disable
// auto link routing of jquery mobile.
// The code below for mobileinit
// notice the last two settings
   $(document).bind("mobileinit", function() {
  $.mobile.ajaxEnabled = false;
  $.mobile.hashListeningEnabled = false;
  $.mobile.pushStateEnabled = false;
  $.mobile.changePage.defaults.changeHash = false;
});