2012-07-28 138 views
5

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

在大多数浏览器中工作正常,IE除外。出于某种莫名其妙的原因,在那里,内容通过AJAX加载,而且,在前一页打开一个新标签页。我怎样才能解决这个问题?

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

+0

你可以告诉我们在jsfiddle中执行该操作的代码,因此更容易发现错误并进行调试吗? – 2012-07-28 22:52:26

+0

哦,对不起,只是读它。要做一点。 – arik 2012-07-29 20:16:59

+0

对不起,但我无法使pushState命令在jsfiddle上工作,它们似乎阻止了它。 – arik 2012-07-29 22:51:44

回答

2

老,但仍然当前问题讨论一些解决方法? 。我只想说我会建议而不是尝试模拟IE上的pushState。

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

  1. 如果history.pushState不为空(浏览器支持pushState的),你使用它,并用漂亮的JavaScript

  2. 如果history.pushState加载内容为空(浏览器不支持pushState),您更改url /关注链接并完成整页更改

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

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

这将破坏您的应用程序的公共页面的正确索引,并且也会看起来很丑。我个人的观点是,为IE用户制作js动画或灯箱并不值得这些权衡。

+1

不幸的是业务需求并不总是在开发人员的直接控制之下。 – jaydel 2015-08-03 12:43:15