我有一个页面,当用户点击链接时,通过隐藏和显示预加载的div来处理导航。但是,用户认为他们实际上已经更改了页面,因此他们点击浏览器的“后退”按钮,试图返回之前隐藏的div。但当然,他们会回到他们来的页面。
处理此问题的最佳方法是什么? 90%的流量来自登录页面。我应该在两者之间夹一个重定向页吗?这是怎么做到的?我可以只更改浏览器的后退按钮行为吗?
答案 0 :(得分:3)
如果您已经在使用jQuery,为什么不简单地添加history manager如jq-bbq或hashchange或历史记录管理器? (或者,如果你想真正全力以赴,请切换到像Sammy这样的MVC JavaScript框架。)这样,后退按钮将按用户的预期工作,而不是通过阻止后退按钮来破解他们的期望或投掷重定向。 (除非你有充分的理由,当然:-))
答案 1 :(得分:3)
如果你使用像jQuery UI这样的浏览器历史插件,你最终会更改历史记录,以便后退按钮实际上不会卸载页面。
http://yoursite.com - >用户点击了一些东 - >新地址栏显示http://yoursite.com/#/something
由于用户返回时的哈希标记,它会返回http://yoursite.com,这应该会触发你的节目之前的div函数
详细了解可用于jQuery的可用历史记录管理器插件。有很多。大多数(如果不是全部)提供您可以指定的可用回调函数。
答案 2 :(得分:1)
在更改页面状态时,请在URL的哈希值中写入一组唯一的参数。您可以通过JS更改此内容,而不会导致页面重新加载。
在页面上设置一个计时器,重复检查当前位置哈希值,如果它发生变化(即用户按下“返回”按钮),则更新页面状态以匹配URL。
我让这个方案在本地应用程序中起到了很好的效果。
答案 3 :(得分:1)
jQuery地址库是另一个很好的选择。 http://www.asual.com/jquery/address/
您可以设置不同应用程序状态的URL,并在页面重新加载时获取URL“参数”。
答案 4 :(得分:-1)
两个想法:
1)onbeforeunload。询问用户是否真的要回去。
2)Sandwidch重定向页面。登录 - >重定向 - >你的页面。只需单击一下即可将用户带到重定向页面。
对于那些知道自己在做什么的人而言,第二种是颈部疼痛。我认为Back按钮(和所有标准导航元素)应该尽可能少地混淆。
我会选择onbeforeunload:
function sure()
{
event.returnValue = "sure?";
}
...
<BODY onbeforeunload="sure()">