月曜日, 4月 28, 2025
Google search engine
ホームニューステックニュース【Typescript】ブラウザバックの落とし穴 #TypeScript - Qiita

【Typescript】ブラウザバックの落とし穴 #TypeScript – Qiita



【Typescript】ブラウザバックの落とし穴 #TypeScript - Qiita

概要

実案件でbfcacheについて色々大変だったことがあるのでメモがてら記事にしました。

bfcacheって知ってる?

bfcacheとはブラウザバックしたときに、直前のページの状態をそのまま使っちゃうもの。

bfcache.png
bfcacheがあるおかげで、ページ遷移が爆速になって無駄なロードをさせないっていうめっちゃ利点ばっかなんだけど、今回はそれがたまたま邪魔してきた。。。

「DOM上の正確な値を表示」

問題

例えば「今の時間(サーバーの時間)」を使ったプログラムを書くとき。
DOM上にサーバーからの時間(サーバーの今の時間)を描画し、jsでその値を元にプログラムを組む場合。
example.png

ページロード時は正常な値が描画されるけど、ブラウザバッグしたときは正常な値が出ない。。。

解決策

そのページにこのjsを入れる。

window.addEventListener('beforeunload', () => {});

※最適解ではないです

最適解ではない理由はそのページにおいてbfcacheを完全に無効にするからです。
ユーザー体験的にはbfcacheを無効にするのは絶対良くない。。。

最適解

おそらく一番良いのはバックエンドがわでAPIを用意し、ブラウザバックの時に叩いて置き換えるというもの。

 window.addEventListener('pageshow', (event) => {
     // bfcacheかそうじゃないか
    if (event.persisted) {
      // API叩くコマンド
    }
  });

pageshowイベントの中で、bfcacheがあるかないかが内包されてるので、それを条件にAPI叩いくのがいいと思います!

まとめ

bfcacheをさせないようにするのは結構簡単にできる。
ただし、ユーザー体験は落ちてしまうのでなるべくしないほうがいい。
逆にbfcacheを有効にしたい人向けのおすすめの記事を貼っておきます。
https://techblog.yahoo.co.jp/entry/2023072430429932/



フラッグシティパートナーズ海外不動産投資セミナー 【DMM FX】入金

Source link

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -
Google search engine

Most Popular

Recent Comments