我正在开发一个jQuery Mobile应用程序.jQuery Mobile pushState
默认使用浏览器的后退按钮动态工作.
现在,我的应用程序旨在动态更改其页面,并且用户在加载应用程序时应始终到达首页.
问题是,只要我去应用程序中的页面,jQuery Mobile就会在URL中更新页面的哈希值.现在,如果用户在应用程序中输入相同的哈希值,jQuery Mobile将自动将它们带到该页面(当我希望它们由我的代码处理时).此外,如果他们刷新页面,我希望我的代码将它们带回原来的位置,而不是直接移动到URL所具有的哈希值.
为了防止这种情况,我尝试在mobileinit
事件中添加以下代码:
$.mobile.hashListeningEnabled = false;
这有效,但它也会禁用pushState
更新,这反过来会破坏后退按钮,我不想发生这种情况.
什么是允许用户使用后退按钮的最佳方式,同时仍然不允许页面之间的手动移动?
我没有太多的元素来描述你的问题的可能和准确的解决方案,但一个简单的应该是这样的:
在您的页面上的每个链接上转到另一个链接附加这样的功能:
$(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();