我有一个带有锚导航的网站(比如gmail,当锚值更改时,页面的新内容加载了ajax)。在Firefox中,当我更改锚点(使用js或页面)时,会创建历史记录中的新项目并且可以正常运行。但是在IE6中它不存储这个新项目,后退按钮不能按预期工作。
无论如何使用javascript添加这个新项目? 这是可能的,因为gmail做到了,但我不知道它是如何做到的。
答案 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。