如果浏览器不支持历史记录 API,Ember 路由是否会回退到使用哈希?



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'

最新更新