1. ホーム
  2. javascript

[解決済み] 戻るボタンをクリックしたときに、クロスブラウザのonloadイベントが発生しますか?

2022-04-14 07:47:33

質問

主要なブラウザ(IEを除く)において、JavaScriptの onload イベントは、バックボタン操作の結果としてページが読み込まれたときには発生しません。

この問題を解決するクロスブラウザのサンプルコード(Firefox、Opera、Safari、IE、...)をどなたか教えてください。私は、Firefoxの pageshow イベントがありますが、残念ながらOperaもSafariもこれを実装していません。

解決方法は?

みんな、JQueryの効果はただ一つ、戻るボタンが押されたときにページが再読み込みされることだとわかった。これは、"とは関係ないんだ。 レディ となります。

これはどのように機能するのでしょうか?さて、JQueryは オンアンロード イベントリスナーです。

// http://code.jquery.com/jquery-latest.js
jQuery(window).bind("unload", function() { // ...

デフォルトでは、何もしません。しかし、Safari、Opera、Mozillaでは、イベントハンドラが何を含んでいても、なぜか再読み込みの引き金になるようです。

[ 編集(Nickolay) : なぜそのように動作するのか、その理由を説明します。 webkit.org , 開発者.mozilla.org . これらの記事 (または以下の別の回答で私がまとめたもの) を読んで、次のことを検討してください。 本当に を行う必要があり、ユーザーにとってページの読み込みが遅くなる] 。

信じられませんか?これを試してみてください。

<body onunload=""><!-- This does the trick -->
<script type="text/javascript">
    alert('first load / reload');
    window.onload = function(){alert('onload')};
</script>
<a href="http://stackoverflow.com">click me, then press the back button</a>
</body>

JQueryを使用した場合も同様の結果が得られます。

を使用しない場合と比較するとよいでしょう。 オンアンロード

<body><!-- Will not reload on back button -->
<script type="text/javascript">
    alert('first load / reload');
    window.onload = function(){alert('onload')};
</script>
<a href="http://stackoverflow.com">click me, then press the back button</a>
</body>