当前位置:  开发笔记 > 编程语言 > 正文

启用后退按钮,不允许通过URL手动更改

如何解决《启用后退按钮,不允许通过URL手动更改》经验,为你挑选了1个好方法。

我正在开发一个jQuery Mobile应用程序.jQuery Mobile pushState默认使用浏览器的后退按钮动态工作.

现在,我的应用程序旨在动态更改其页面,并且用户在加载应用程序时应始终到达首页.

问题是,只要我去应用程序中的页面,jQuery Mobile就会在URL中更新页面的哈希值.现在,如果用户在应用程序中输入相同的哈希值,jQuery Mobile将自动将它们带到该页面(当我希望它们由我的代码处理时).此外,如果他们刷新页面,我希望我的代码将它们带回原来的位置,而不是直接移动到URL所具有的哈希值.

为了防止这种情况,我尝试在mobileinit事件中添加以下代码:

$.mobile.hashListeningEnabled = false;

这有效,但它也会禁用pushState更新,这反过来会破坏后退按钮,我不想发生这种情况.

什么是允许用户使用后退按钮的最佳方式,同时仍然不允许页面之间的手动移动?



1> Emanuele Par..:

我没有太多的元素来描述你的问题的可能和准确的解决方案,但一个简单的应该是这样的:

在您的页面上的每个链接上转到另一个链接附加这样的功能:

$(DOMElem).on("click",function(){
  sessionStorage["urlChangedByLink"] = "true";
});

如果没有问题,您可以在同一页面上尝试:

$( window ).on( "navigate", function( event, data ) {
  if(sessionStorage["urlChangedByLink"] == "true")
    $.mobile.hashListeningEnabled = true;
  else
    $.mobile.hashListeningEnabled = false;
});

或者,在另一页上,您检查此存储变量是否存在而不是进行操作:

if(sessionStorage["urlChangedByLink"] == "true")
  continue navigation...
else
  window.history.back();

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有