javascript - 如果浏览器不支持 History API,Ember 路由是否会退回到使用哈希?

标签 javascript ember.js router history.js html5-history

Ember 文档 states它可以设置为使用 History API 进行路由,而不是使用基于哈希的片段:

App.Router.reopen({
  location: 'history'
});

但是我找不到任何关于如果浏览器不支持 History API 会发生什么的提及。它会回退到使用像 History.js 这样的哈希吗?

如果不支持,我是否应该检查 History API 支持并在不支持时将历史实现切换为哈希?

最佳答案

在 ember 源中似乎没有任何 History API 支持检测。

因此,如果您将 location 设置为 history,并且没有支持,您的路由可能会失败。

如果您打算支持旧浏览器,最安全的选择是像您说的那样:

if (window.history && window.history.pushState) {
    App.Router.reopen({
      location: 'history'
    });
}

2014 年 1 月 23 日更新

如果您在 Canary 中启用 ember-routing-auto-location 功能,您现在可以使用 location:'auto'

关于javascript - 如果浏览器不支持 History API,Ember 路由是否会退回到使用哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056877/

相关文章:

php - $.getJSON 返回未定义的结果

javascript - 我可以在 Node 的全局范围内覆盖 ES 6's Promise by bluebird' 的实现吗?

javascript - JavaScript 中的方法重载

node.js - Ember.js、Express.js 和 Node.js 的 Assets 管道?

java - 以编程方式设置 Spring 集成路由器属性

javascript - ReactJS需要从外部类组件调用函数

javascript - Ember.js - ember-pikaday 不允许预设日期

ember.js - 在 Ember View 中,重新渲染内部 subview 后运行代码的最佳方式是什么?

javascript - 嵌套页面上的 Angular 5 多个路由器导出

macos - 是否有用于访问路由器 Web 界面的通用/默认 IP