我已经看到了许多技术和建议,可以在jQuery Mobile中进行深层链接,但我的情况正好相反。
我有一个多页文档,完全独立。我希望应用的入口点成为第一页,并禁用任何深层链接(编辑:通过“深层链接”,我指的是书签,或者只是返回的能力)到其他页面在文件中。我也不希望在应用程序中导航以影响哈希标记。换句话说,如果用户在我的应用程序中,并且他们点击浏览器的后退按钮,我希望他们在进入我的应用程序之前转到他们正在查看的任何页面,即使它们不在我的第一页上。
我试过的是在我的所有内部向后和向前导航上将mobile.changePage方法的changeHash选项设置为“false”。但结果是,当他们使用浏览器的后退按钮时,他们会返回两页。此外,这项技术并未禁用深层链接,正如我所希望的那样。
我希望其他人可以提供建议,而无需提供代码示例,因为我的代码相当复杂。
答案 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 强>