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リンクをクリックすると popstate が発生するのはなぜchange hashですか?

4

1 に答える 1

19

発火の理由window.onpopstateは、ハッシュの変更によるものではありません。アンカータグをクリックすると履歴が変更されているためです。

https://developer.mozilla.org/en/DOM/window.onpopstateから:

アクティブな履歴エントリが変更されるたびに、popstate イベントがウィンドウにディスパッチされます。アクティブ化されている履歴エントリが history.pushState() の呼び出しによって作成された場合、または history.replaceState() の呼び出しによって影響を受けた場合、popstate イベントの状態プロパティには履歴エントリの状態オブジェクトのコピーが含まれます。

于 2012-03-30T18:35:14.430 に答える