如何在使用backbone.js的IE8和IE10 /现代浏览器之间获得一致的PushState链接?

时间:2012-12-14 19:11:42

标签: backbone.js pushstate backbone-routing

我在Chrome中,我复制了我的网址:“http://www.example.com/a/123456789”并将其粘贴到IE8中。它工作正常,因为我的路线设置正确。

如果我然后导航到其他地方,我会按预期获得IE8后备网址:“http://www.example.com/a#a/123456789”(请注意哈希),一切都很好。

这是问题......

现在,如果我使用散列(http://www.example.com/a#a/123456789)复制我的链接并将其粘贴到现代浏览器中,它会将我转储到http://www.example.com/a#a

任何人都有此行为的经验吗?

1 个答案:

答案 0 :(得分:0)

我为此提出了一些解决方法,所以我想我会分享它,因为它可以帮助其他人......

// Make urls copied from IE8 work when pasted in modern browsers
if (history.pushState && location.hash.match(/#a{1}/)) {
    location.href = location.href.replace('a#a', 'a');
}

基本上,我只是检查浏览器是否支持推送状态,以及我们要查找的哈希是否在URL中。由于我们的哈希值与我们在pushState中使用的哈希值相同,因此只需快速替换即可。