【问题标题】:Save the anchor in the ie6 history将锚点保存在ie6历史记录中
【发布时间】:2023-03-11 08:49:01
【问题描述】:

我有一个带有锚导航的网站(例如 gmail,当锚值更改时,页面的新内容会使用 ajax 加载)。在 Firefox 中,当我更改锚点(使用 js 或使用页面)时,历史记录中的新项目会创建并完美运行。但在 IE6 中,它不存储这个新项目,并且后退按钮无法按预期工作。

是否可以使用 javascript 添加这个新项目? 这是可能的,因为 gmail 可以做到,但我不知道它是如何做到的。

【问题讨论】:

    标签: javascript internet-explorer


    【解决方案1】:

    我已经很多处理历史和使用哈希。几乎所有现有的历史插件都存在某种差距。我用过的一个非常接近完美的是这个是一个 jQuery 插件:

    http://www.mikage.to/jquery/jquery.history.js

    它于今年 3 月更新,处理 IE 8 问题,它也非常成功地处理了 IE6。我注意到的一件事是 IE 真的讨厌拥有 ?在 # 之后的哈希中。当 ?存在。即使这个我认为需要一个小补丁?,我真的需要把它发送给 Mikage。处理这个问题的方法是在引用哈希时不要在插件中使用location.hash,而是使用这个函数:

    function getHash(loc) {
        loc = loc.toString();
        if (loc.indexOf("#") != -1)
            return loc.substring(loc.indexOf("#"));
            else return "";
    }
    

    因此,在您需要哈希的那些地方,将location 传递给函数...

     getHash(location) 
    

    ...而不是使用 location.href。但请注意,对于 IE,由于它使用的是 iframe,因此您希望使用 iframe.location。

     getHash(iframe.location)
    

    雅虎的错误

    在查看此 URL 时,您可以看到 Yahoo 在 IE 中没有优雅地处理 ?:

    http://developer.yahoo.com/yui/examples/history/history-tabview.html#tabview=tab1?7236471234

    它应该忽略不存在的模块,(它对其他没有 ? 的名称执行此操作)。但是当 ?在网址中。

    (我稍后会扩展此列表)

    真正简单的历史

    坦率地说,主要问题似乎是它已经处于休眠状态。我经历过this issue,只是不想深入了解它:

    此外,即使看起来没有任何变化 在我旅行时发生在页面上 穿越历史,倒退 一旦我点击,功能就会返回 我一直在浏览的页面 在使用 RSH 之前。所以,如果我 点击了 RSH 页面中的四个链接, 后退功能将在之后返回 我点击了后退按钮四 次。我希望这是有道理的。

    【讨论】:

    • +1 表示差距,但更重要的是 ? # 之后,这很容易成为这里的杀手
    • 我从没听说过“#?”之前的问题。很高兴知道。
    • 有趣的是,我将历史函数建模为与 URL 完全一样的工作,并认为我非常聪明。在四处闲逛查看不同的实现并查看我是否做得好之后,我遇到了 facebook,它恰好使用了一个非常相似的想法来跟踪历史。坦率地说,我应该把它变成一个更充实的插件,它包含 URL 解析器并使其成为事件驱动的。
    • 去年 IE6 修复了一个错误,该错误会破坏手动更改哈希的所有 JS 实现(在地址栏中)
    • 这个 jquery.history.js 为我工作!但是在 IE6 中你需要使用 js 函数来调用它。
    【解决方案2】:

    我认为您可能有不同的问题。 IE6 肯定会处理 # 历史中的链接,因为它应该在任何给定的测试页面上处理,所以我相信你已经以某种方式破坏了这一点,或者你的特定版本的 IE 存在错误。

    我建议您在其他机器上尝试一些不同的IE6 副本和版本以排除后者,然后尝试简化您的代码并重新构建它以查看问题是否出现以及何时出现。关闭 JS 可能(取决于 html)是一种快速的测试方法。

    如果所有其他方法都失败了,我建议你看看 Really Simple History,它(我上次检查)解决了几乎所有你可以抛出的 JS/历史问题。

    【讨论】:

      【解决方案3】:

      雅虎也有history manager

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-24
        • 2011-10-24
        • 2015-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多