Jquery mobile 在jQuery Mobile中禁用深度链接和哈希标记更改

Jquery mobile 在jQuery Mobile中禁用深度链接和哈希标记更改,jquery-mobile,navigation,Jquery Mobile,Navigation,我已经看到了许多在jQuery Mobile中实现深度链接的技术和建议,但我的情况正好相反 我有一个多页文档,完全独立。我希望应用程序的入口点是第一个页面,并禁用指向文档中其他页面的任何深度链接(edit:我所说的“深度链接”是指书签,或者简单地说是返回功能)。我也不希望应用程序内的导航影响哈希标记。换句话说,如果用户在我的应用程序中,并且他们点击了浏览器的后退按钮,我希望他们进入我的应用程序之前进入他们正在查看的任何页面,即使他们不在我的第一页 我尝试的是在所有内部向后和向前导航中将mobil

我已经看到了许多在jQuery Mobile中实现深度链接的技术和建议,但我的情况正好相反

我有一个多页文档,完全独立。我希望应用程序的入口点是第一个页面,并禁用指向文档中其他页面的任何深度链接(edit:我所说的“深度链接”是指书签,或者简单地说是返回功能)。我也不希望应用程序内的导航影响哈希标记。换句话说,如果用户在我的应用程序中,并且他们点击了浏览器的后退按钮,我希望他们进入我的应用程序之前进入他们正在查看的任何页面,即使他们不在我的第一页

我尝试的是在所有内部向后和向前导航中将mobile.changePage方法上的changeHash选项设置为“false”。但结果是,当他们使用浏览器的后退按钮时,他们会后退两页。此外,这种技术并没有像我希望的那样禁用深度链接


我希望其他人可以提供建议,而无需我提供代码示例,因为我的代码在其他方面相当复杂。

您可以在
mobileinit
事件上完全禁用
changeHash
。修改全局默认值应该放在head中jQuery.js之后,jQuery Mobile之前


但是如何禁用深度链接呢?在你的例子中,我仍然可以直接进入第3页,只需在我的浏览器地址栏中的URL末尾添加哈希标记#p3即可。我不想在我的应用程序中允许此操作。我希望所有进入应用程序的尝试都必须从第一页开始。@Joel add
$.mobile.hashListeningEnabled=false
mobileinit
上。啊,谢谢你,奥马尔。现在我们有进展了。我还禁用了pushStateEnabled,尽管这可能不是必需的。我仍然对使用浏览器的后退按钮存在问题:在我的应用程序中的任何地方,如果我使用后退按钮,浏览器将返回两页,不是返回到我进入应用程序之前看到的页面,而是返回到之前的页面;然后,如果我使用“前进”按钮,我会直接进入我的应用程序,总是跳过中间的页面。接下来我将尝试你建议的第二部分。如果我有足够的分数来投票支持你的解决方案,我会的。window.history.back建议没有解决第二个问题(关于跳回两页的问题)。@Joel,我想
window.history.back()
解决了它。我将在历史API中更深入地挖掘。关于向前,同样
data.state.direction
返回向前。
<script src="jquery.js"></script>
<script>
  $(document).on("mobileinit", function(){
   $.mobile.changePage.defaults.changeHash = false;
   $.mobile.hashListeningEnabled = false;
  });
</script>
<script src="jquery.mobile.js"></script>
$(window).on("navigate", function (event, data) {
  if (data.state.direction == 'back') {
    window.history.back();
    return false;
  }
});