我正在尝试使用历史骨干根,但它在IE(或其他不支持历史记录API的浏览器)上运行不正常。
我的网络应用有这张地图,其中每个模块发出请求,但操作应该调用功能 :
映射:
var MyRouter = Backbone.Router.extend({
routes: {
"moduleA/": "homeA",
"moduleA/action1/:id": "action1",
// ...
}
}
var app = new MyRouter();
Backbone.history.start({pushState: true});
我正在使用它进行导航:
app.navigate('moduleA/',{trigger:true});
或
app.navigate('/moduleA/action1/4334',{trigger:true});
(我正在获取链接点击事件并调用导航(link.href,{trigger:true}))
Chr / FF(支持历史API支持的浏览器)上的每一个都正常工作,并且在浏览器中更新了URL并且函数被调用。
然而,在IE中,url被这种哈希格式替换:site / #moduleA / 为了解决这个问题,我尝试在history.start中设置root。
Backbone.history.start({pushState: true, root:'/moduleA/'});
但是,现在IE使用以下格式替换url: site / moduleA /#moduleA / 或 site / moduleA / #moduleA/action1 / 432432 。
那么,为什么IE在网址中重复根? 我该如何解决这个问题?
提前致谢
答案 0 :(得分:0)
通过将root
设置为'/moduleA/'
,您告诉骨干使用site/moduleA
作为根,这是预期的行为。
骨干记忆
routes: {
"moduleA/": "homeA", // #moduleA/
"moduleA/action1/:id": "action1" // #moduleA//action1/:id
}
与
不同routes: {
"/moduleA/": "homeA", // #/moduleA/
"/moduleA/action1/:id": "action1" // #/moduleA//action1/:id
}
使用app.navigate
时要记住这一点。