假设你有一个这样的 URL:http: //yoursite.com/#stackoverflow
如果我在地址栏中输入新的哈希值,它会尝试在页面上找到该 ID。有什么方法(可能使用 javascript?)来检测该浏览器活动,然后强制页面在该 URL 处重新加载?
谢谢!
假设你有一个这样的 URL:http: //yoursite.com/#stackoverflow
如果我在地址栏中输入新的哈希值,它会尝试在页面上找到该 ID。有什么方法(可能使用 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
event。对它的支持是相当不错的,实际上。在较旧的浏览器上,您必须轮询location.hash
(例如,使用setInterval
或setTimeout
)。