场景:
打开新网页,并随机给出哈希值。
var urlNoHash = location.href;
history.replaceState(null, null, urlNoHash + "#" + Math.random() );
window.addEventListener("hashchange", myFunction());
function myFunction() {
alert("hashchange");
}
添加新哈希时会触发哈希更改,但在使用浏览器的"后退按钮"向后导航时不会触发。
我认为这是一个浏览器实现错误:一旦你用replaceState
修改了历史记录,后退按钮只会触发popstate
事件,而不会触发hashchange
事件。
好消息是,更改location.hash
也会触发popstate
事件,因此您不必同时收听这两个事件。