1

我试图让我的网站正确响应后退按钮。我已经保存了我想要它做的那个散列,但是我不知道 jQuery 能够判断散列何时更改的钩子。它不是 .ready(),因为页面不会重新加载。我用什么?

为清楚起见进行编辑:

我使用的是 iframe,所以我不知道何时有人点击了链接。它在同一个子域上,所以我可以看到它的文件路径,并且正在保存它,以便您可以添加书签。不幸的是,通过将其保存为哈希,我的后退按钮现在无法重新加载,也无法重新加载 iframe,所以我的后退按钮基本上坏了。如果有办法判断 URI 何时更改,我可以对照 iframe 地址检查它,如果它们不匹配则更改它。

我需要的只是一种检查 URI 是否已更改的方法。URI 是否有 .change() ?类似的东西?

4

5 回答 5

4

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

于 2009-09-02T18:07:31.023 回答
3

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

我不知道 jQuery 能够判断哈希何时更改的钩子

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

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

于 2009-09-02T18:07:26.093 回答
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);
    })
})
于 2011-01-18T05:03:37.363 回答
1

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

于 2009-10-24T11:24:53.910 回答
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);
    }
}
于 2009-09-02T18:23:57.747 回答