我正在尝试使用历史主干根目录,但它在 IE(或其他不支持历史 API 的浏览器)上无法正常工作。
我的 webapp 有这张地图,每个模块都会发出请求,但动作应该调用一个函数:
- 站点/模块A/
- 站点/模块A/action1/ID
- 站点/模块B/
- 站点/模块B/action1/ID
映射:
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});
(我正在获取链接点击事件并调用navigate(link.href,{trigger:true}))
Every 在 Chr/FF(支持历史 API 的浏览器)上运行良好,并且 url 在浏览器中更新并且函数被调用。
但是,在 IE 中,url 被这种哈希格式替换:site/#moduleA/ 为了解决这个问题,我尝试在 history.start 中设置根目录
Backbone.history.start({pushState: true, root:'/moduleA/'});
但是,现在 IE 使用以下格式替换 url:site/moduleA/#moduleA/或site/moduleA/#moduleA/action1/432432。
那么,为什么 IE 在 url 中重复 root 呢?我该如何解决这个问题?
提前致谢