標準の Java/SpringMVC/JSP/jQuery Web アプリで、「戻る」(または history.go(-1)) イベントを検出しようとしています。ページに戻ります (ここで、集計コンポーネントによって表示されるバックエンド データを変更できます)。
私は JavaScript で次のことを試しました (これを達成する方法に関する StackExchange のいくつかの投稿に従ってください):
<script type="text/javascript">
$(document).ready(function() {
window.onpageshow = function(event) {
console.log("Event:");
console.dir(event);
if (event.persisted) {
alert("non-jQuery - back to page - loaded from bfcache");
} else {
alert("non-jQuery - loaded page from server");
}
};
$(window).on("pageshow", function(event){
console.log("Event:");
console.dir(event);
if (event.originalEvent.persisted) {
alert("jquery - back to page - loaded from bfcache");
} else {
alert("jquery - loaded page from server");
}
});
});
</script>
persisted
私は OpenSUSE Linux を実行しており、FireFox と Chrome (最新バージョン) でこれを試しましたが、イベントの属性が に設定されるたびにfalse
(これは、JavaScript コンソールと上記のコードからポップアップするアラートで確認できます)。つまり、サーバーから読み込まれたか、[戻る] ボタン (または [戻る] リンク) を介して再度表示されたかに関係なく、毎回ということです。
私の意図は、ページが [戻る] ボタンまたは呼び出しを介して表示されている場合に、サーバーから更新されたデータを使用して要約コンポーネント/パネルをリロードするために AJAX 呼び出しを行うことでしたhistory.go(-1)
。
また、ページが bfcache に入れられないようにアンロード ハンドラー (何もしない) を設定しようとしましたが、まだ bf-cached バージョンを表示しているようで、event.persisted
(またはevent.originalEvent.persisted
) が に設定されていfalse
ます。
このプロパティは Linux で正しく管理されていますか? コードで愚かなことをしていますか? どんな助けやアイデアも大歓迎です、ありがとう!