history.replaceState - hashcha未被触发"后退按钮"

时间:2018-02-04 10:46:05

标签: javascript

情景:

打开新网页,随机提供哈希值。

var urlNoHash = location.href;
history.replaceState(null, null, urlNoHash + "#" + Math.random() );

window.addEventListener("hashchange", myFunction());

function myFunction() {
    alert("hashchange");
}

在添加新哈希时会触发hashchange,但在使用浏览器"后退按钮"

后导航时则不会。

1 个答案:

答案 0 :(得分:0)

我认为这是一个浏览器实现错误,但是一旦您使用replaceState修改了历史记录,后退按钮只会触发popstate event,而不会触发hashchange事件。

好消息是changing location.hash also triggers popstate event,因此您不必收听这两个事件。