我做了一个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 页面中的四个链接,
返回功能将在之后返回
我点击了后退按钮四
次。我希望这是有道理的。