jQuery Mobile动态应用程序和基于历史的导航



我想实现一个没有浏览器历史导航的jQuery Mobile应用程序(请随意询问原因)。我可以动态生成页面,将它们插入DOM,并在changeHash设置为false的情况下打开它们,然后在pagehide事件处理程序中清理它们,一切都很好。直到我使用像selectmenu这样的小部件来调用对话框。对话框的关闭函数显式调用window.history.back(),我的世界就崩溃了。

对于这个问题,有没有简单的解决方法?

如果没有,jQM是否应该适应优雅地支持无导航应用程序,或者jQM根本不适合这种应用程序?

http://jquerymobile.com/test/docs/api/globalconfig.html

尝试将hashListeningEnabled设置为false

我学会了不要为此目的使用changeHash=false。请确保当前页面始终位于历史堆栈的顶部。在我的例子中,它是堆栈中除了调用对话框之外的唯一项。到目前为止,这似乎像一个冠军:

function showNewPage($page) {
  $page.appendTo($.mobile.pageContainer);
  $('.ui-page-active').bind('pagehide',function(){$(this).removeWithDependents()});
  $.mobile.changePage($page);
  $.mobile.firstPage = $page;
}

新页面是在没有哈希的情况下创建的,因此URL永远不会更改。由于我实际上是在替换第一个页面,所以我不得不更新$.mobile.firstPage。调用removeWithDependents()而不是remove()会清理由selectmenu创建的对话框。

幸运的是,它比我预期的要简洁得多,只是对像我这样的新人来说,拼凑起来有点痛苦。我看到一些评论建议不要以这种方式"破解"jQM,但我认为jQM的价值太大了,无法将其限制在传统的服务器分发的表示模型中。

最新更新