hashchange解雇popstate

时间:2012-03-30 18:27:09

标签: javascript html5 pushstate

Here's what I'm working with

代码:

<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链接然后点击返回,它是否只会被触发?

1 个答案:

答案 0 :(得分:15)

window.onpopstate触发的原因不是因为哈希的更改。 这是因为当您点击锚标记时,历史记录已被更改。

来自https://developer.mozilla.org/en/DOM/window.onpopstate

  

每次活动时都会将popstate事件调度到窗口   历史条目变更。如果正在激活的历史记录条目是   通过调用history.pushState()创建或受到调用的影响   history.replaceState(),popstate事件的state属性包含一个   历史条目的状态对象的副本。