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