web-dev-qa-db-ja.com

window.onpopstateが機能していません。ページに戻っても何も起こりません

サイトのページの1つにwindow.onpopstateを追加しようとしていますが、何も起こりません。私はこのスクリプトをページに置きました:

<script type="text/javascript">
  window.addEventListener('popstate', function(event) {
    if (event.state) {
      alert(event.state);
    }
  }, false);
</script>

私も試しました:

<script type="text/javascript">
  window.onpopstate = function() {
    alert("popped!");
  }
</script>

ただし、ページに戻ってもアラートは表示されません。

popstateイベントを取得するのは、1つ以上の履歴エントリ/エントリを追加し、後でユーザーがブラウザの戻るボタンをクリックした場合のみです。 。

ブラウザの履歴にエントリを追加すると、(ユーザーが別のページに移動するのと同じように)URLを変更できますが、実際には新しいページをロードする必要はありません。

pushStateメソッドを使用して履歴エントリを追加します。

history.pushState({}, '', '/newpage');

1つのエントリを追加し、ユーザーが戻るをクリックすると、URLは前のエントリに戻りますが、そのアドレスのページは読み込まれません。代わりに、popstateイベントがトリガーされます。

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history を参照してください。


例外:

古いブラウザは、popstateイベントとブラウザの履歴の操作をサポートしていません。

一部のブラウザ(Safariなど)は、ページが実際に読み込まれたときにもpopstateイベントをトリガーします。

21
Paolo