我有一个网页,用户可以通过 AJAX 显示条款和条件而无需重新加载页面。这本身没有问题,但是,我也在尝试推动历史状态。
这在大多数浏览器中都可以正常工作,除了 IE。出于某种莫名其妙的原因,内容是通过 AJAX 加载的,而且还会在前一页中打开一个新选项卡。我怎样才能解决这个问题?
您可以在此网页 ( http://galaxy-battle.de ) 上查看示例,尝试单击“加入”框中的“T&Cs”。
我有一个网页,用户可以通过 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
为 null(浏览器不支持 pushState),则更改 url / 跟随链接并进行整页更改
当然,这意味着 IE<=9 用户不会拥有其他用户拥有的所有炫酷动画。但我想问的问题是:你想在网上看到你网站的链接包含#
吗?
用户可能认为您的应用很有用,并在网络上粘贴指向它的链接。这很酷,因为它为您带来了一些谷歌果汁。现在,如果该用户使用 IE 而您使用 history.js,用户将粘贴包含哈希的链接。
这将破坏应用程序公共页面的正确索引,并且看起来也很丑陋。我个人的看法是,为 IE 用户提供 js 动画或灯箱不值得这些折衷。