我试图找到一种方法来检测用户何时按下浏览器中的后退/前进按钮。
我正在使用主干来处理路由,以及使用主干来呈现我的视图。
问题是我无法从任何地方挂钩此页面更改事件。
我尝试在我的视图的初始化函数中添加一个日志..但是当我使用后退按钮时它没有被触发。
我真的不确定如何检测此页面更改。
我试图找到一种方法来检测用户何时按下浏览器中的后退/前进按钮。
我正在使用主干来处理路由,以及使用主干来呈现我的视图。
问题是我无法从任何地方挂钩此页面更改事件。
我尝试在我的视图的初始化函数中添加一个日志..但是当我使用后退按钮时它没有被触发。
我真的不确定如何检测此页面更改。
您可以将回调绑定到 Backboneroute
事件:
Backbone.history.on('route', function () {
// Do your stuff here
});
你可以Backbone.history.getFragment()
用来知道你是站着的。
当按下后退按钮时,会触发popstate事件。
我正在使用这段代码:
// listening for the browser's back button
window.addEventListener('popstate', function(e) {
router.navigate(Backbone.history.getFragment(), { trigger: true, replace: true });
});
您可以扩展Backbone.Router
and 重载route
andopen
方法。您可以在这两种方法中处理所有页面更改。所以只需从主干文件中重新复制它们,然后使用它。
显然,即使 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))
}