我有一个网页,用户可以通过AJAX在不重新加载页面的情况下显示条款和条件。这本身没有问题,然而,我也在努力推动一种历史状态。
这在大多数浏览器中都很好,除了IE。出于某种莫名其妙的原因,在那里,内容是通过AJAX加载的,但也会使用上一页打开一个新的选项卡。我该怎么解决这个问题?
你可以在这个网页上看到这个例子(http://galaxy-battle.de),尝试点击"加入"框中的"T&Cs"。
IE9及以下版本不支持pushState。调用以下线路时出现异常
window.history.pushState(null,null,pathFullPage);
SCRIPT438:对象不支持属性或方法"pushState"?terms_and_conditions,第62行字符21
您可能会对IE 中Emulate/polyfill history.pushstate()中讨论的一些解决方法感兴趣
老问题,但仍是当前问题。我只想说,我建议而不是尝试在IE上模拟pushState。
相反,你可以使用一个功能检测:
-
如果
history.pushState
不为空(浏览器支持pushState),则使用它并使用漂亮的javascript 加载内容 -
如果
history.pushState
为空(浏览器不支持pushState),则更改url/跟随链接并进行整页更改
当然,这意味着IE<9用户不会拥有其他用户拥有的所有酷动画。但我想问的问题是:你想在网上看到包含#
的网站链接吗?
用户可能认为你的应用程序很有用,并将链接粘贴到网络上。这很酷,因为它给你带来了一些谷歌果汁。现在,如果该用户使用IE,而您使用history.js,则用户将粘贴一个包含哈希的链接。
这将破坏你的应用程序的公共页面的适当索引,也会看起来很难看。我个人的观点是,为IE用户提供js动画或灯箱不值得这些交易