戻るボタンをクリックすると、クロスブラウザのオンロードイベントが発生しますか? 質問する

戻るボタンをクリックすると、クロスブラウザのオンロードイベントが発生しますか? 質問する

onloadすべての主要ブラウザ (IE を除く) では、戻るボタン操作の結果としてページが読み込まれたときにはJavaScriptイベントは発生せず、ページが最初に読み込まれたときにのみ発生します。

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

ベストアンサー1

皆さん、JQuery には 1 つの効果しかないことがわかりました。戻るボタンが押されたときにページが再読み込みされるのです。これは "準備ができて「」。

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

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

デフォルトでは何も行われません。しかし、イベント ハンドラに何が含まれているかに関係なく、何らかの理由で Safari、Opera、Mozilla でリロードがトリガーされるようです。

[編集(ニコライ): なぜそのように動作するのか、その理由は次のとおりです。ウェブキット開発者:これらの記事(または以下の別の回答の私の要約)を読んで、本当にこれを実行する必要があり、ユーザーにとってページの読み込みが遅くなります。

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

<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>

おすすめ記事