在IE9中使用HTML5 pushState()

时间:2011-04-03 04:40:23

标签: javascript html5 pushstate

有没有办法在IE9中使用HTML5历史记录API(pushState)? 如果所有其他浏览器都有一个很棒的解决方案!

2 个答案:

答案 0 :(得分:26)

History.js

来自回购的报价:

  

History.js在所有浏览器中优雅地支持HTML5历史/状态API(pushState,replaceState,onPopState)。包括对数据,标题,replaceState的持续支持。支持jQuery,MooTools和Prototype。对于HTML5浏览器,这意味着您可以直接修改URL,而无需再使用哈希。对于HTML4浏览器,它将恢复使用旧的onhashchange功能。

答案 1 :(得分:-1)

根据Ember关于历史api的文档: http://emberjs.com/api/classes/Ember.Location.html

支持历史API的浏览器将使用HistoryLocation,那些不支持hashLocation但仍支持hashchange事件的浏览器将使用HashLocation,并且在极少数情况下,不支持将使用NoneLocation。

App.Router.map(function() {
  this.resource('posts', function() {
    this.route('new');
  });
});

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

这将导致支持历史记录api的现代浏览器的posts.new url / posts / new,或者为Internet Explorer 9及更低版本支持/#/ posts / new。

当用户访问您的应用程序的链接时,它们将自动升级或降级到相应的Location类,并根据需要对URL进行相应的转换。