history.replaceState - hashchange not Fired for "Back Button"



场景:

打开新网页,并随机给出哈希值。

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事件,因此您不必同时收听这两个事件。

最新更新