5

我有一个网页,用户可以通过 AJAX 显示条款和条件而无需重新加载页面。这本身没有问题,但是,我也在尝试推动历史状态。

这在大多数浏览器中都可以正常工作,除了 IE。出于某种莫名其妙的原因,内容是通过 AJAX 加载的,而且还会在前一页中打开一个新选项卡。我怎样才能解决这个问题?

您可以在此网页 ( http://galaxy-battle.de ) 上查看示例,尝试单击“加入”框中的“T&Cs”。

4

2 回答 2

10

IE9 及以下不支持 pushState。调用以下行时出现异常

window.history.pushState(null, null, pathFullPage);

SCRIPT438:对象不支持属性或方法“pushState”?terms_and_conditions,第 62 行字符 21

您可能会对在 IE 中的 Emulate/polyfill history.pushstate() 中讨论的一些解决方法感兴趣

于 2012-08-01T12:59:33.230 回答
2

旧但仍然是当前的问题。我只想说我建议不要尝试在 IE 上模拟 pushState。

取而代之的是,您可以使用特征检测:

  1. 如果history.pushState不为空(浏览器支持 pushState),您可以使用它并使用漂亮的 javascript 加载您的内容

  2. 如果history.pushState为 null(浏览器不支持 pushState),则更改 url / 跟随链接并进行整页更改

当然,这意味着 IE<=9 用户不会拥有其他用户拥有的所有炫酷动画。但我想问的问题是:你想在网上看到你网站的链接包含#吗?

用户可能认为您的应用很有用,并在网络上粘贴指向它的链接。这很酷,因为它为您带来了一些谷歌果汁。现在,如果该用户使用 IE 而您使用 history.js,用户将粘贴包含哈希的链接。

这将破坏应用程序公共页面的正确索引,并且看起来也很丑陋。我个人的看法是,为 IE 用户提供 js 动画或灯箱不值得这些折衷。

于 2013-10-02T11:08:54.937 回答