【问题标题】:Jquery - tell when the hash changes?Jquery - 告诉哈希何时更改?
【发布时间】:2009-09-02 18:02:51
【问题描述】:

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

为清晰起见进行编辑:

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

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

【问题讨论】:

    标签: javascript jquery fragment-identifier


    【解决方案1】:

    你可以试试History Event插件。

    【讨论】:

    • 他们也使用时间。我想这就是我要做的。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 如果一切都失败了,我会做计时器,谢谢!让我看看是否有人有不涉及计时器的方法。
    【解决方案3】:

    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);
        })
    })
    

    【讨论】:

      【解决方案4】:

      您应该看看 Ben Nadel 的 solution,它正在将事件绑定到非 DOM 对象。

      【讨论】:

        【解决方案5】:

        没有一种观察哈希变化的方法,在 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);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-12
          • 2012-07-07
          • 2022-11-02
          • 2017-05-11
          • 2012-05-27
          • 1970-01-01
          • 1970-01-01
          • 2013-05-28
          相关资源
          最近更新 更多