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

时间:2009-06-05 12:56:17

标签: javascript internet-explorer

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

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

3 个答案:

答案 0 :(得分:9)

我已经完成了很多的历史工作并使用了哈希。几乎所有现有的历史插件都有一些差距。我使用过的非常接近完美的是这个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)

Yahoo的Bug

在查看此网址时,您可以看到雅虎在IE中没有优雅处理?

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

它应该忽略不存在的模块(对于其中没有?的其他名称,它会这样做)。但是当它出现时会引发JavaScript错误?在URL中。

(我稍后会扩展此列表)

真的只是历史

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

  

此外,即使没有出现任何变化   我旅行时在页面上进行   落后于历史,后面   我点击后会返回功能   我一直在浏览的页面   在使用RSH之前。所以,如果我   点击RSH页面中的四个链接,   后退功能将在返回后返回   我点击了后退按钮四   倍。我希望这是有道理的。

答案 1 :(得分:0)

我想你可能有不同的问题。 IE6当然可以在任何给定的测试页面上处理历史记录中的#链接,所以我相信你已经以某种方式破坏了这个或者你的特定版本的IE有一个错误。

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

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

答案 2 :(得分:0)

雅虎也有history manager

相关问题