16

这是我正在使用的

代码:

<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链接会触发弹出状态,难道不应该仅在我单击change hash链接然后单击返回时才触发吗?

4

1 回答 1

19

火灾的原因window.onpopstate不是因为散列的变化。这是因为当您单击锚标记时,历史记录已更改。

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

每次活动历史条目更改时,都会向窗口发送一个 popstate 事件。如果被激活的历史条目是由调用 history.pushState() 创建的或受到调用 history.replaceState() 的影响,则 popstate 事件的 state 属性包含历史条目状态对象的副本。

于 2012-03-30T18:35:14.430 回答