Ember文档指出,可以通过使用:将其设置为使用History API进行路由,而不是基于哈希的片段
App.Router.reopen({
location: 'history'
});
但如果浏览器不支持历史API,我找不到会发生什么。它会回到使用像History.js这样的散列吗?
如果不是,我是否应该检查历史API支持,如果不支持,则将历史实现切换为哈希?
在ember源代码中似乎没有任何历史API支持检测。
因此,如果您将location
设置为history
,并且没有支持,那么您的路由可能会失败。
如果你打算支持旧的浏览器,最安全的选择就像你说的:
if (window.history && window.history.pushState) {
App.Router.reopen({
location: 'history'
});
}
2014年1月23日更新
如果您在canary中启用ember-routing-auto-location
功能,您现在可以使用location:'auto'
。