使用 Backbone 历史/推送状态时遇到问题 - 但仅限于不支持它的浏览器(旧 IE)
问题是这样的。当我第一次访问/en_gb/dashboard
时 - 在所有浏览器中一切正常。但是,在 IE<=9 中,它附加#dashboard
到地址栏,形成/en_gb/dashboard#dashboard
. 现在,当我点击刷新时,我的路由器没有触发。
并非我的所有站点都在 Backbone 控制之下 - 所以路由器正在工作:
routes: {
'dashboard': 'showDashboard'
}
我的引导程序如下所示:
if (Backbone.history) {
var pushStateSupported = _.isFunction(history.pushState);
var urlRoot = '/en_gb/';
var enableSilent = !pushStateSupported;
Backbone.history.start({
pushState: pushStateSupported,
root: urlRoot,
silent: enableSilent
});
if (!pushStateSupported) {
Backbone.history.navigate(window.location.pathname.substring(urlRoot.length), { trigger: true });
}
}
添加调试,我可以看到Backbone.history.navigate()
总是被调用,但是当哈希存在时似乎trigger: true
没有被拾取。