【问题标题】:Reload page when changing hash更改哈希时重新加载页面
【发布时间】:2013-09-12 21:39:33
【问题描述】:

更改哈希时重新加载页面。

我有一个简单的单页网站,上面有几个“页面”。这些页面位于一个宽容器中,当您选择一个时会滚动。我在 URL 中添加了一个哈希,以便您可以直接定位到特定页面。这只是在 style.left 属性与 switch 语句中的哈希匹配时设置。

问题是当我更改 URL 中的哈希值时。例如,将其从 Home.html#Web 更改为 Home.html#Photos。执行此操作时,页面不会重新加载,因此我创建的用于检查哈希的 Setup 函数不会被调用,并且页面会保持在原来的位置。

关于强制页面重新加载的方法有什么想法吗?还是更好的解决方案?

谢谢, 安迪

【问题讨论】:

    标签: javascript url hash window.location


    【解决方案1】:

    不要重新加载页面。相反,设置一个onhashchange 事件处理程序,并从那里调整左值:

    window.onhashchange = function() {
        // do stuff
    }
    

    否则,为什么要使用散列链接而不是常规链接?无论如何,如果您真的想要重新加载,只需将window.location.reload() 放入onhashchange 处理程序...

    【讨论】:

    • 好的,我已将它添加到我的 Javascript 的开头,但是当我更改哈希时它似乎没有触发。
    • 你必须使用window.onhashchange = PageAdjustPageAdjust后面没有括号)。
    • 还是什么都没有。我觉得我把它放在错误的地方或什么的。目前,它只是在我的外部 js 文件的顶部,在任何函数之外。
    • 奇怪,它应该可以工作(见a simple demo)。你用的是哪个浏览器?
    • 我实际上并没有点击任何东西。我只是在浏览器的 URL 栏中更改它。 IE10 用于测试。
    【解决方案2】:

    我有一个在 $('body').on('click', '.subcategory-link', function () { }); 上触发的 JQuery 函数在我的情况下,它检测到 URL 是否附加了一个哈希,所以我保持该函数相同,然后只要检测到哈希更改就使用强制重新加载: 下面我写了代码,请试试这个我的魅力。

           $(document).ready(function() {    
                $('body').on('click', '.subcategory-link', function () {        var data = $(this).attr('href');
               alert($(this).attr('href'));
               window.location.reload();
               });
    

    });

    【讨论】:

      猜你喜欢
      • 2012-07-28
      • 2011-12-15
      • 2012-06-23
      • 2014-09-23
      • 2016-04-09
      • 2015-11-08
      • 1970-01-01
      • 2015-01-19
      • 2015-03-29
      相关资源
      最近更新 更多