当浏览器后退按钮没有预期效果时该怎么办

时间:2010-12-23 05:10:58

标签: javascript jquery html navigation

我有一个页面,当用户点击链接时,通过隐藏和显示预加载的div来处理导航。但是,用户认为他们实际上已经更改了页面,因此他们点击浏览器的“后退”按钮,试图返回之前隐藏的div。但当然,他们会回到他们来的页面。

处理此问题的最佳方法是什么? 90%的流量来自登录页面。我应该在两者之间夹一个重定向页吗?这是怎么做到的?我可以只更改浏览器的后退按钮行为吗?

5 个答案:

答案 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()">