代码:
<a href="#" onclick="window.onpopstate = function() { alert('pop'); };
return false; ">set up window.onpopstate
</a><br>
<a href="#somehash2">change hash</a>
<div onclick="alert(location.href);">show location.href</div>
为什么点击change hash
链接会触发popstate,如果我点击change hash
链接然后点击返回,它是否只会被触发?
答案 0 :(得分:15)
window.onpopstate
触发的原因不是因为哈希的更改。
这是因为当您点击锚标记时,历史记录已被更改。
来自https://developer.mozilla.org/en/DOM/window.onpopstate:
每次活动时都会将popstate事件调度到窗口 历史条目变更。如果正在激活的历史记录条目是 通过调用history.pushState()创建或受到调用的影响 history.replaceState(),popstate事件的state属性包含一个 历史条目的状态对象的副本。