首先谢谢各位热心解答的各位! =)
我现在已经做了更多的研究,我相信我对我的实施感到满意。这是我的研究结果。
首先,我完成了Hash library http://github.com/blixt/js-hash。它是一个独立的库,没有依赖项。它有两个功能:Hash.init(callback, iframe)
and Hash.go(newHash)
。每当哈希值发生变化时,就会调用回调函数,并将新哈希值作为其第一个参数,并使用一个标志作为第二个参数,指示回调函数是否由于初始状态而被调用(true
)或对哈希值的实际更改(false
).
Hash.js http://github.com/blixt/js-hash/raw/master/Hash.js(麻省理工学院许可证)
我还制作了一个 jQuery 插件以使其更易于使用。添加一个全局hashchange
事件也是如此。有关如何使用它的信息,请参阅源代码中的示例。
jquery.hash.js http://github.com/blixt/js-hash/raw/master/jquery/jquery.hash.js(麻省理工学院许可证)
要查看它们的使用情况,请转到我的 JavaScript“领域”页面:
Blixt 的 JavaScript 领域 http://blixt.org/js
互联网浏览器 8
巡航顺利!只需拍打其中一个即可onhashchange
事件到window
对象(使用attachEvent
)并得到location.hash
事件处理程序中的值。
用户是否单击带有哈希值的链接,或者您是否以编程方式设置哈希值都没有关系;历史被完美保存。
Chrome、火狐、Safari 3+、Opera 8+
巡航顺利!只需轮询更改location.hash
财产使用setInterval
和一个函数。
历史完美运转。对于歌剧,我设置history.navigationMode
to 'compatible'
。老实说,我不确定它是做什么的,我是根据 YUI 代码中的注释的推荐来做的。
Note:Opera 需要一些额外的测试,但到目前为止对我来说效果很好。