4

你怎么能检测到window.location.hashonchange,例如我可以这样做:

if(window.location.hash.hasChanged())
{
   // ajax stuff
}
else
{
   // nothing, no hash has been changed (without any window reload)
}

如果我更改散列,例如编辑并在编辑后按回车更改散列,则不会发生任何事情,只有在窗口重新加载时才会检测到散列的更改。

4

2 回答 2

17

最新的浏览器(FF3.6+、IE8、Chrome)支持窗口对象上的“hashchange”事件 - 请参阅MDC:window.onhashchange以获取使用示例。简单的异步侦听可能如下所示:

window.onhashchange = function() {
   // do something awesome here
};

如果您想要一个支持旧浏览器的实现,事情会很快变得复杂,我建议使用其他人的库或插件 - 请参阅此问题的答案以获得一些建议。

于 2011-01-21T04:18:03.760 回答
2

Ben Alman 的hashchange jQuery 插件提供了监控散列变化的能力。

于 2011-01-21T03:43:29.467 回答