0

假设你有一个这样的 URL:http: //yoursite.com/#stackoverflow

如果我在地址栏中输入新的哈希值,它会尝试在页面上找到该 ID。有什么方法(可能使用 javascript?)来检测该浏览器活动,然后强制页面在该 URL 处重新加载?

谢谢!

4

3 回答 3

1

您需要绑定到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);
} 
于 2012-07-07T18:27:15.830 回答
0

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

于 2012-07-07T18:26:04.993 回答
0

值得一看,

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

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

于 2012-07-07T18:30:39.493 回答