【问题标题】:What to do when browser back button doesn't have the intended effect当浏览器后退按钮没有预期效果时该怎么办
【发布时间】:2010-12-23 05:10:57
【问题描述】:

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

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

【问题讨论】:

  • 您希望用户遍历他们之前打开的隐藏 div 对吗?
  • 您可以使用命名锚(url 中的散列部分)技巧,这是当今非常流行的做法。我不完全确定这是如何完成的,但我希望有人能尽快发布详细信息。

标签: javascript jquery navigation


【解决方案1】:

如果您已经在使用 jQuery,为什么不简单地添加一个 history manager 像 jq-bbq 或 hashchange 或历史管理器? (或者,如果你真的想全力以赴,切换到像 Sammy 这样的 MVC JavaScript 框架。)这样,后退按钮将按照用户的期望工作,而不是通过阻止后退按钮或抛出来绕过他们的期望在重定向中。 (当然,除非你有充分的理由这样做:-))

【讨论】:

  • jq-bbq 说它利用了 HTML5 hashchange 事件....这是否意味着对 IE 的支持不佳?
  • @Emile -- 作者声称支持 IE6 到 8,所以我暂时将其回答为“否”。
【解决方案2】:

如果您使用像 jQuery UI 这样的浏览器历史插件,您最终会更改历史记录,因此后退按钮实际上不会卸载页面。

http://yoursite.com -> 用户点击某些东西 -> 新地址栏显示为http://yoursite.com/#/something

由于用户返回时的哈希标记,它会返回到http://yoursite.com,这应该会触发你的显示上一个 div 函数

阅读更多关于 jQuery 可用的历史管理器插件的信息。有不少。大多数(如果不是全部)都提供您可以指定的可用回调函数。

【讨论】:

    【解决方案3】:

    在您的页面状态发生变化时,将一组独特的参数写入您的 URL 的哈希值。您可以通过 JS 更改此设置,而不会导致页面重新加载。

    在页面上设置一个计时器,重复检查当前位置哈希,如果它发生变化(即用户按下后退按钮),则更新页面的状态以匹配 URL。

    我的这个方案在本地应用程序中效果很好。

    【讨论】:

      【解决方案4】:

      jQuery 地址库是另一个不错的选择。 http://www.asual.com/jquery/address/

      您可以为不同的应用程序状态设置URL,并在页面重新加载时获取URL“参数”。

      【讨论】:

      • 感谢 Osiris...我实现了 bbq,但为其他选项 +1
      【解决方案5】:

      两个想法:

      1) 卸载前。询问用户是否真的想返回。

      2) 夹入重定向页面。登录 -> 重定向 -> 您的页面。单次返回点击会将用户带到您的重定向页面。

      对于那些知道自己在做什么的人来说,第二个是一种痛苦。我认为后退按钮(和所有标准导航元素)应该尽可能少地被弄乱。

      我会选择 onbeforeunload:

      function sure()
      {
        event.returnValue = "sure?";
      } 
      
      ... 
      
      <BODY onbeforeunload="sure()">
      

      【讨论】:

      • 最好使用历史或状态管理插件之一来使页面符合用户期望,而不是重定向它们
      猜你喜欢
      • 2013-03-02
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 2015-04-15
      • 2012-05-14
      • 1970-01-01
      相关资源
      最近更新 更多