我有一个网页,用户可以通过AJAX在不重新加载页面的情况下显示条款和条件。这本身就没有问题,但是,我也试图推动历史状态。
除了IE之外,在大多数浏览器中都可以正常工作。出于某些莫名其妙的原因,内容是通过AJAX加载的,但是,还会在上一页打开一个新选项卡。我该如何解决这个问题?
您可以在此网页上看到示例(http://galaxy-battle.de),尝试点击“加入”框中的“T& Cs”。
答案 0 :(得分:10)
IE9及以下doesn't support pushState。调用以下行时会出现异常
window.history.pushState(null,null,pathFullPage);
SCRIPT438:对象不支持属性或方法'pushState' ?terms_and_conditions,第62行21字符
中讨论的某些变通方法感兴趣答案 1 :(得分:2)
旧但仍然是当前的问题。我只想说我会建议不尝试在IE上模拟pushState。
而不是那样,您可以使用特征检测:
如果history.pushState
不为null(浏览器支持pushState),则使用它并使用漂亮的javascript加载内容
如果history.pushState
为空(浏览器不支持pushState),则更改网址/关注链接并进行整页更改
当然,这意味着IE< = 9用户将不会拥有其他用户拥有的所有酷炫动画。但我想问的问题是:你想看到包含#
的网站的网络链接吗?
用户可能会认为您的应用很有用,并在网络上粘贴指向它的链接。这很酷,因为它带给你一些谷歌汁。现在,如果该用户使用IE并使用history.js,则用户将粘贴包含哈希的链接。
这会破坏您应用的公共网页的正确索引,也会显得难看。我个人认为,为IE用户提供js动画或灯箱并不值得那些权衡。