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

时间:2012-02-10 22:26:25

标签: jquery-mobile

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

这个问题有一个简单的解决方法吗?

如果没有,jQM应该适应优雅地支持无导航应用,还是jQM从根本上不适合这种应用?

2 个答案:

答案 0 :(得分:1)

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

尝试将hashListeningEnabled设置为false

答案 1 :(得分:0)

我学会了为此目的不使用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中有太多的价值将它限制为传统的服务器分配演示模型。