当前位置:   jquery > 正文

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

javascript,jquery,jquery-mobile,pushstate,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我正在开发一个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();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/jquery/detail/13374
推荐阅读
相关标签
  

闽ICP备14008679号