我正在使用以下系统配置:
使用Backbone 0.5.3在Ubuntu 11.04上使用Chromium 14.0.835.202
定义了以下路由和回调的骨干路由器:
, routes: {
'': 'handlerRoot'
, 'second': 'handlerSecond'
}
在这个系统中,我有以下行为:
我正在观看历史的Backbone.js代码,我看到它正在使用'onhashchange'事件(对于兼容的浏览器)。因此,我在浏览器控制台中手动设置以下内容:
function locationHashChanged() {
console.log(window.location.toString())
};
window.onhashchange = locationHashChanged;
我用这种配置做了相同的实验(1),(2),(3)和(4)。实际上,以前历史记录中的所有URL路径都以相反的顺序打印。例如在(3)中,当我按下后退按钮时,首先打印“秒”的URL,然后打印“root”的URL。因此,Backbone的行为确实是'onhashchange'行为。
我的问题是:
这种行为的原因是什么(为什么它有用)?例如,如果我的回调只是切换视图,在示例(4)中,我正在切换视图四次,当我真的需要仅切换视图一次时(更改视图在'秒'中显示视图以“root”呈现。有没有办法解决这个问题?
提前致谢!
答案 0 :(得分:1)
编辑: 在多次搜索之后,Chromium在控制台上只有一个带有后退按钮的错误,该路由与其他浏览器一样只触发一次。
我创建了一个jsFiddle来尝试你的问题而我没有看到问题。
您可以在此处测试路线:http://jsfiddle.net/Atinux/V36ZU/show/
请参阅此处的代码:http://jsfiddle.net/Atinux/V36ZU/
我在Linux 10.04上使用Chrome,Firefox和Opera进行了测试,没有任何问题......但Chromium(15.0.874.106)有后退按钮的错误。所以我认为Chromium没有正确解释Backbone JS中的历史对象。
我回答了GitHub存储库中的一个问题,在此处重新打开它:https://github.com/documentcloud/backbone/issues/646#issuecomment-3291944