繁体   English   中英

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

[英]Save the anchor in the ie6 history

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

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

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

雅虎的Bug

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

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

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

(我会暂时扩展这个清单)

真的只是历史

坦率地说,它的主要问题似乎是它处于休眠状态。 我遇到过这个问题 ,只是不想深入研究它:

此外,即使在我向后浏览历史记录时页面上似乎没有发生任何更改,一旦我点击我在使用RSH之前导航的页面,后退功能将返回。 因此,如果我点击RSH页面中的四个链接,则在我单击后退按钮四次后将返回后退功能。 我希望这是有道理的。

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

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

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

雅虎也有历史经理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM