将锚点保存在ie6历史记录中

2024-04-16

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

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


我做了一个lot处理历史和使用哈希的工作。几乎所有现有的历史记录插件都存在某种差距。我用过的非常接近完美的是这个 jQuery 插件:

http://www.mikage.to/jquery/jquery.history.js 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 http://developer.yahoo.com/yui/examples/history/history-tabview.html#tabview=tab1?7236471234

它应该忽略不存在的模块(它对其中没有 ? 的其他名称执行此操作)。但当 ? 出现时,它会引发 JavaScript 错误。位于网址中。

(我稍后会扩展这个列表)

非常简单的历史

坦率地说,它的主要问题似乎是它已经休眠了。我经历过这个问题 http://code.google.com/p/reallysimplehistory/issues/detail?id=33只是不想深入研究它:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将锚点保存在ie6历史记录中 的相关文章

随机推荐