【问题标题】:Ajax history on IE6/7 is brokenIE6/7 上的 Ajax 历史被打破
【发布时间】:2010-11-17 04:01:08
【问题描述】:

我正在用 JS 编写我自己的 Ajax 历史库。我遇到了 IE6 和 IE7 的问题。有人可以详细说明为什么会发生以下情况吗?

IE6 & 7

我可以在不刷新页面的情况下设置哈希值。

window.location = 'site.com/index.html#' + pageNumber;

我可以转到第 1 页、第 2 页、第 3 页等等。当我在第 3 页并点击后退按钮时,我并没有回到第 2 页。相反,我完全脱离了 index.html!好像IE不认为不同的hash值是不同的历史点。

IE7

IE7 向后兼容模式中的 IE8 声称它具有 onhashchange 侦听器。

if ('onhashchange' in window) {
   // true in IE7
   window.onhashchange = someFunction();
}

然而,当 URL 改变时,IE7 从不执行 someFunction()。这意味着它在于有 onhashchange 但从未实现它。

【问题讨论】:

    标签: javascript ajax internet-explorer


    【解决方案1】:

    【讨论】:

    • 不,我正在努力学习 JS。我现在不想使用库。
    • 如果有一个库,这意味着其他人过去也遇到过同样的问题,而且它可能更干净。您应该使用该库。
    • 总有一些框架可以解决 Stack Overflow 上发布的任何问题。我试图了解根本问题,而不是如何使用框架来掩盖问题。
    【解决方案2】:

    IE6 和 IE7 已知不支持hashchange 事件;看来您在 IE8 的 IE7 兼容模式中发现了一个错误(?)。

    如果您想在这些浏览器中使用此功能,您需要使用库,如 Phong Nguyen 的答案中的库,通过隐藏的 iframe 模拟 hashchange 支持。在很多情况下,这样的库也会解决你的后退按钮问题;我知道他链接到的那个。

    【讨论】:

    • 即使 IE6/7 不触发 hashchange 事件,它也应该让我通过返回按钮回到我之前的 hash 值,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2023-01-11
    • 2013-06-17
    • 2011-01-16
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多