Ember.js Html4浏览器不支持HTML5历史API的history.pushState和history.replaceState方法

Ember.js Html4浏览器不支持HTML5历史API的history.pushState和history.replaceState方法,ember.js,pushstate,history.js,Ember.js,Pushstate,History.js,我正在开发一个ember应用程序(使用ember-1.0.pre.js)。我正试图在IE8上提供跨浏览器兼容性 问题在于每次转换后生成的url对用户来说似乎不正确/错误。比如说,我点击了像域名/sell/new这样的url,它最初让我进入应用程序的sell页面。然后我尝试转换一个名为“Purchase”的新状态,它将使我进入应用程序的购买页面。新状态转换在IE8地址栏中生成一个URL域名/sell/new\offers/Purchase?&suid=13651499917790137365316

我正在开发一个ember应用程序(使用ember-1.0.pre.js)。我正试图在IE8上提供跨浏览器兼容性

问题在于每次转换后生成的url对用户来说似乎不正确/错误。比如说,我点击了像
域名/sell/new
这样的url,它最初让我进入应用程序的sell页面。然后我尝试转换一个名为“Purchase”的新状态,它将使我进入应用程序的购买页面。

新状态转换在IE8地址栏中生成一个URL
域名/sell/new\offers/Purchase?&suid=1365149991779013736531657156165
,而不是
域名/offers/Purchase

注意:域名=

生成的url包含两个不正确的内容

  • 首字母前缀“/sell/new#”

  • url查询字符串中的参数“&_suid=1365149991779013736531657156165”


  • 我试图找出问题所在,发现HTML4浏览器不支持HTML5历史API中的pushState和replaceState方法。我如何在IE8上提供支持有人能帮我吗

    我建议
    History.js
    作为不支持历史API的浏览器的polyfill:

    它正在:

    HTML5浏览器:

    • 火狐4+
    • 铬8+
    • 歌剧11.5
    • Safari 5.0+
    • Safari iOS 4.3+
    HTML4浏览器:

    • 即6,7,8,9
    • 火狐3
    • 歌剧10、11.0
    • 狩猎4
    • Safari iOS 4.2、4.1、4.0、3.2
    history.js
    位置处理程序添加并注册到您的余烬应用程序中

    以下是我从原始的
    Ember.HistoryLocation
    ()

    然后在应用程序中使用此polyfill:

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

    使用Modernizer检查功能,对于不受支持的浏览器使用polyfill。这太棒了,将是对ember.js的一个很好的补充-也许不是在core中,但肯定是作为一个插件。提醒:如果您想保持相同的标题或实现自己的标题处理程序,请将
    pushState/replaceState
    的第二个参数更改为
    document.title
    App.Router.reopen({
      location: 'historyJs'
    });