IE历史推送状态

时间:2012-07-28 22:40:50

标签: ajax internet-explorer history pushstate new-window

我有一个网页,用户可以通过AJAX在不重新加载页面的情况下显示条款和条件。这本身就没有问题,但是,我也试图推动历史状态。

除了IE之外,在大多数浏览器中都可以正常工作。出于某些莫名其妙的原因,内容是通过AJAX加载的,但是,还会在上一页打开一个新选项卡。我该如何解决这个问题?

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

2 个答案:

答案 0 :(得分:10)

IE9及以下doesn't support pushState。调用以下行时会出现异常

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

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

您可能会对Emulate/polyfill history.pushstate() in IE

中讨论的某些变通方法感兴趣

答案 1 :(得分:2)

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

而不是那样,您可以使用特征检测:

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

  2. 如果history.pushState为空(浏览器不支持pushState),则更改网址/关注链接并进行整页更改

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

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

    这会破坏您应用的公共网页的正确索引,也会显得难看。我个人认为,为IE用户提供js动画或灯箱并不值得那些权衡。