Jquery – 告诉哈希什么时候改变?

我正在尝试让我的网站正确回应后退按钮。 我已经保存了我想要它做的哈希,但我不知道jQuery的钩子能够告诉哈希值何时发生变化。 它不是.ready(),因为页面没有重新加载。 我该用什么?

编辑有点清晰:

我正在使用iframe,所以当有人点击链接时我无法分辨。 它位于相同的子域中,因此我能够看到它的文件路径,并保存它以便您可以添加书签。 不幸的是,通过将其保存为哈希,我的后退按钮现在无法重新加载,无法重新加载iframe,因此我的后退按钮基本上已损坏。 如果有办法告诉URI何时发生变化,我可以根据iframe地址进行检查,如果不匹配则更改它。

我只需要检查URI是否已更改。 是否有URI的.change()? 那些线路上的东西?

文档准备好后,您检查哈希并适当地更改页面。

我不知道jQuery的钩子能够分辨哈希何时发生变化

您可以截取哈希锚点击事件并进行适当响应,而不是等待“哈希已更改”事件(不存在)。

一些方法通过检查计时器上的window.location.hash来创建“哈希已更改”事件。

您可以尝试历史事件插件。

Ben’the cowboy’Alman为哈希变化编写了一个跨平台插件

http://benalman.com/news/2010/07/jquery-hashchange-event-v13/

我不知道你是否在iframe中使用它或者是什么,但如果你在iframe之外使用它就会像

 $(function(){ $(window).hashchange(function(){ //Insert event to be triggered on has change. changeIframeContent(window.location.hash); }) }) 

您应该看一下Ben Nadel的解决方案 ,它将事件绑定到非DOM对象。

没有一种buitin方式来观察哈希变化,在Firefox中你可以使用watch方法,但据我所知它不是默认的,所以你可以破解它写的东西(见下文)

 function setWatchHashChanges(functionObject) { if(window.location.watch) { window.location.watch('hash', function(e){functionObject(e);return e;}); } else { if(!setWatchHasnChanges.hash) { setWatchHasnChanges.hash = window.locaton.hash; } else { setInterval(function(){ if(setWatchHasnChanges.hash!== window.locaton.hash) { setWatchHasnChanges.hash = window.locaton.hash; functionObject(setWatchHasnChanges.hash); } }, 100); } }