【问题标题】:Can JavaScript hook and override browser back and forward buttons?JavaScript 可以挂钩和覆盖浏览器的后退和前进按钮吗?
【发布时间】:2011-06-17 22:45:39
【问题描述】:

我们正在编写一个网络应用程序来充当后端的控制面板,我们只使用 JavaScript - 所有 DOM 元素都是动态创建的,根本没有静态 HTML。

我们有一个模块/插件类型的接口,一个模块是“视图”的集合 - 视图本质上是一个包含初始化方法的函数,该方法接受一个 div 的 arg,因此它知道在哪里绘制自己。

当用户在视图之间浏览时,我们会保留他们去过的地方和所在位置等的历史记录,因此我们可以在视图之间提供后退/前进导航,并在导航时保存视图的状态。

我们提供面包屑路径以及后退和前进按钮。我还想做的是挂钩浏览器的后退/前进按钮,这样我们就可以拦截点击并覆盖它,这样它就可以浏览我们正在维护的历史记录 - 当他们到达我们正在维护的历史记录的第一页时我们当然不会覆盖并让他们离开我们的网站。

有没有常见的方法来做到这一点?还是浏览器明确阻止这种事情发生?

谢谢

【问题讨论】:

  • inb4 “哦,这太可怕了,不要做任何事情”
  • 另一种解决方案是使用<link rel="prev" href="url"><link rel="next" href="url"> 元素。可悲的是,这是一个非答案;我认为唯一对此有用的浏览器是 Opera 和 Firefox(带有插件)。
  • 这里有人能记住 swfaddress 吗? =)
  • 我讨厌网站覆盖后退按钮。

标签: javascript html dom


【解决方案1】:

使用 Ben Alman 的出色 jQuery-bbq 插件:http://benalman.com/projects/jquery-bbq-plugin/,它提供了与后退/前进按钮结合使用的 hashchange 跨浏览器。

【讨论】:

    猜你喜欢
    • 2013-07-31
    • 2017-06-29
    • 2011-07-28
    • 2014-07-24
    • 1970-01-01
    • 2011-12-26
    • 2014-05-10
    • 2021-01-02
    相关资源
    最近更新 更多