是否有任何Backbone友好的方式来检测后退按钮?

时间:2013-06-24 19:20:33

标签: internet-explorer backbone.js backbone-routing

Stack Overflow有几个与检测后退按钮相关的问题,最相关的一个是用于执行此操作的库列表:

https://stackoverflow.com/questions/116446/what-is-the-best-back-button-jquery-plugin

问题是,当我尝试使用该线程(以及其他地方)的库时,它们都是:

  • 不起作用了(他们必须工作一次)
  • 不支持IE8
  • 打破了Backbone的路由器

问题似乎是Backbone的路由器监视hashchange事件,这些其他库也是如此,它们以影响Backbone的路由器的方式(例如,一个使后退按钮完全停止工作)这样做。

所以,我的问题是,有没有人知道一种检测后退按键的方法,哪种方法可以在IE8 +中运行,哪些(这是关键部分)不会破坏Backbone路由器?

或者失败了,有人甚至可以解释或指出我如何在Backbone.Router驱动的网站上实现后退按钮预防吗?

2 个答案:

答案 0 :(得分:1)

如果您尝试使用后退按钮(例如删除事件)来消除特定点击次数的触发,最简单的方法是首先使用preventDefault()作为onclick事件的一部分,防止将它们添加到历史记录中功能

如果这是你的问题,这将是一篇很好的文章:http://lostechies.com/derickbailey/2011/08/03/stop-using-backbone-as-if-it-were-a-stateless-web-server/

这是一种使用Backbone检测后退点击的相当简单的方法:backbone routing detecting whether forward or back pressed

答案 1 :(得分:1)

如果您使用的是pushState,则可以使用window.onpopstate

window.onpopstate = function(event) {
  console.log(document.location);
};