これはバックフォワード キャッシュが原因です。ユーザーが移動したときにページの完全な状態を保存することになっています。ユーザーが [戻る] ボタンで戻ると、キャッシュからページをすばやく読み込むことができます。これは、HTML コードのみをキャッシュする通常のキャッシュとは異なります。
bfcacheonload
イベントのためにページが読み込まれると、トリガーされません。代わりに、イベントのpersisted
プロパティを確認できます。onpageshow
最初のページ読み込み時に false に設定されます。ページが bfcache からロードされると、true に設定されます。
window.onpageshow = function(event) {
if (event.persisted) {
alert("From back / forward cache.");
}
};
何らかの理由で、jQuery にはイベントにこのプロパティがありません。ただし、元のイベントから見つけることができます。
$(window).bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
alert("From back / forward cache.");
}
});
これらの問題の迅速な解決策は、戻るボタンが押されたときにページをリロードすることです。ただし、これは、バック/フォワード キャッシュが与えるプラスの効果を無効にします。
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
onunload
補足として、空のハンドラーをソリューションとして使用することを提供する多くのページを見ることができます。これはiOS5以降は機能していません。
$(window).bind("unload", function() { });