我想实现一个没有浏览器历史导航的jQuery Mobile应用程序(随意问为什么)。我可以动态生成页面,将它们插入到DOM中,然后将changeHash设置为false,然后在pagehide事件处理程序中清理它们,这一切都在世界上很好。直到我使用像selectmenu这样调用对话框的小部件。对话框的close函数显式调用window.history.back(),我的世界崩溃了。
这个问题有一个简单的解决方法吗?
如果没有,jQM应该适应优雅地支持无导航应用,还是jQM从根本上不适合这种应用?
答案 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中有太多的价值将它限制为传统的服务器分配演示模型。