我正试图找到一种方法来检测用户何时按下浏览器中的后退/前进按钮。
我使用骨干来处理路线,以及骨干来渲染我的观点。
问题是我无法从任何地方进入此页面更改事件。
我尝试在我的初始化函数中为我的视图添加一个日志..但是当我使用后退按钮时它没有被触发。
我真的不确定如何检测此页面更改。
答案 0 :(得分:10)
您可以将回调绑定到Backbone route
事件:
Backbone.history.on('route', function () {
// Do your stuff here
});
您可以使用Backbone.history.getFragment()
知道您的身份。
答案 1 :(得分:3)
按下后退按钮时会触发 popstate 事件。
我正在使用这段代码:
// listening for the browser's back button
window.addEventListener('popstate', function(e) {
router.navigate(Backbone.history.getFragment(), { trigger: true, replace: true });
});
答案 2 :(得分:1)
您可以延长Backbone.Router
并重载route
和open
方法。您可以在这两种方法中处理所有页面更改。所以只需从骨干文件中重新复制它们,然后使用它。
答案 3 :(得分:0)
显然即使GitHub也不知道如何检测按下了哪个按钮;) 他们使用这段代码:
slideTo: function (a) {
var b = this.pathFromURL(a),
c = this.frameForPath(b),
d = $("#slider .frame-center").attr("data-path") || "";
c.is(".frame-center") || (d == "/" || b.split("/").length > d.split("/").length ?
this.slideForwardTo(a) : this.slideBackTo(a))
}
答案 4 :(得分:-2)