2023年7月27日木曜日

JavaScript: ブラウザ戻るボタンでページ表示されたときのイベント検知

フォームなどでブラウザの戻るボタンで戻ってきたときに、ブラウザのキャッシュにより以前の情報が表示されて困る場合があります。 検索すると、以下のようにすれば良しとあるのですが、どうもこの event.persisted が動作しません。(いつも false)
// 強制リロード
window.addEventListener('pageshow', function (event) {
  if (event.persisted) {
    // bfcache発動時の処理
    window.location.reload();
  }
});
その他、探したところ window.performance.navigation.type というものがあり、これを使うと意図通り動作しました。
window.addEventListener('pageshow', function(event) {
  let flg=window.performance.navigation.type;
  //flg=0が始めてきたとき、flg=1がリロードしたとき、flg=2がブラウザバックで戻ってきたとき
  if (flg == 2) {
      window.location.reload();
    }
});


参考: ブラウザバック を検知したい
https://teratail.com/questions/312782

0 件のコメント:

コメントを投稿