当用户将哈希添加到URL时,重新加载浏览器

Make the browser reload when user adds hash to to URL

本文关键字:新加载 加载 浏览器 用户 哈希 添加 URL      更新时间:2023-09-26

所以假设您有一个如下的URL:http://yoursite.com/#stackoverflow

如果我在地址栏中键入一个新的散列,它会试图在页面上找到该ID。是否有amy方法(可能使用javascript?)检测浏览器活动,然后强制页面在该URL处重新加载?

谢谢!

您需要绑定到hashchange事件:

window.onhashchange = function() {
    window.location.reload();
};

不过要小心:一些较旧的浏览器不支持此事件(请参阅此),因此您需要一个polyfill。

下面是一个示例,外加一种针对旧浏览器的轮询技术:

if ('onhashchange' in window) {
    window.onhashchange = function() {
        window.location.reload();
    };
} else {
    var hash = window.location.hash;
    setInterval(function() {
       if (window.location.hash !== hash) {
           window.location.reload();
       }
    }, 100);
} 

在较新的浏览器上,您可以使用hashchange事件。事实上,对它的支持相当不错。在较旧的浏览器上,您必须轮询location.hash(例如,使用setIntervalsetTimeout)。

值得一看,

这个小插件为跨浏览器支持提供了一个抽象。

http://benalman.com/projects/jquery-hashchange-plugin/