我正在尝试让我的网站正确回复后退按钮。我已经保存了我想要它做的哈希,但我不知道jQuery的钩子能够告诉哈希值何时发生变化。它不是.ready(),因为页面没有重新加载。我该用什么?
稍微编辑一下:
我正在使用iframe,所以当有人点击链接时我无法分辨。它位于相同的子域中,因此我能够看到它的文件路径,并保存它以便您可以添加书签。不幸的是,通过将其保存为哈希,我的后退按钮现在无法重新加载,无法重新加载iframe,因此我的后退按钮基本上已损坏。如果有办法告诉URI何时发生变化,我可以根据iframe地址进行检查,如果不匹配则更改它。
我需要的是检查URI是否已更改的方法。是否有URI的.change()?沿着这条路线的东西?
答案 0 :(得分:4)
您可以尝试History Event插件。
答案 1 :(得分:3)
文档准备好后,检查哈希并适当地更改页面。
我不知道jQuery的钩子能够告诉哈希何时更改
您可以截取哈希锚点击事件并进行适当响应,而不是等待“哈希已更改”事件(不存在)。
有些方法通过检查计时器上的window.location.hash
来创建“哈希已更改”事件。
答案 2 :(得分:2)
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);
})
})
答案 3 :(得分:1)
你应该看一下Ben Nadel的solution,它是绑定事件到非DOM对象。
答案 4 :(得分:0)
没有内置的方法来监视哈希更改,在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);
}
}