【问题标题】:How do I know if the user clicks the "back" button?我如何知道用户是否点击了“返回”按钮?
【发布时间】:2010-09-25 07:23:00
【问题描述】:

我正在使用锚点来处理 ajaxy 网站的唯一网址。但是,我想在用户点击浏览器的“后退”按钮时重新加载内容,以便内容始终与 url 匹配。

我怎样才能做到这一点?用户单击“返回”时是否会触发 jQuery 事件?

【问题讨论】:

  • 简而言之,您无法可靠地检测后退按钮是否被跨浏览器单击。
  • @Russ:在大多数(如果不是全部)重要的浏览器中,您可以非常可靠地捕获后退按钮。
  • @Russ,在下面的答案(不是评论)框中输入一些文字,然后尝试回击。
  • @Matti - 对于你的例子来说,这是一个非常狭窄的范围......你的原始陈述是一个广泛的陈述,例如,如果我加载 page1.html 转到 page2.html......你不能当我从page2 回到page1 时,检测到它是专门的后退按钮。
  • @Matti - 我的意思是您说的是哈希更改,具体来说,很多网站只是 page1page2 等,没有哈希开始发挥作用...在所有这些情况下,您都无法区分后退按钮单击和浏览器关闭等。

标签: javascript ajax jquery


【解决方案1】:

您需要使用 hashchange 事件。有几个流行的插件。我一直在使用地址插件并喜欢它。有些人还会建议烧烤。

Address plugin

jQuery BBQ

【讨论】:

    【解决方案2】:

    如果您使用的是 ajax 网址而不是重新加载页面,我猜您有 #something 样式的网址,使用哈希导航。如果是这种情况,您可能希望 window.onhashchange 事件重新加载相应的内容。

    由于 所有 浏览器不支持它,there's a plugin for this,您的代码将如下所示:

    $(window).hashchange(function() {
      //do something with location.hash that just changed
    });
    

    【讨论】:

      【解决方案3】:

      YUI 历史管理器通过使用 setInterval 每 10 毫秒检查一次散列来做到这一点。 back 没有注册事件,所以这可能是唯一可能的方法。

      【讨论】:

      • 该事件存在于某些浏览器中,最好在它存在的地方使用它并在它不存在时进行轮询,我的答案中的插件正是这样做的。
      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 2014-08-09
      • 2014-08-31
      • 1970-01-01
      • 2016-04-05
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多