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

时间:2014-01-10 00:12:00

标签: jquery-mobile navigation

我已经看到了许多技术和建议,可以在jQuery Mobile中进行深层链接,但我的情况正好相反。

我有一个多页文档,完全独立。我希望应用的入口点成为第一页,并禁用任何深层链接(编辑:通过“深层链接”,我指的是书签,或者只是返回的能力)到其他页面在文件中。我也不希望在应用程序中导航以影响哈希标记。换句话说,如果用户在我的应用程序中,并且他们点击浏览器的后退按钮,我希望他们在进入我的应用程序之前转到他们正在查看的任何页面,即使它们不在我的第一页上。

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

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

1 个答案:

答案 0 :(得分:0)

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

<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>

然后,您需要在navigate事件上收听返回按钮,并使用window.history.back()将用户带到历史记录中。

$(window).on("navigate", function (event, data) {
  if (data.state.direction == 'back') {
    window.history.back();
    return false;
  }
});
  

<强> Demo