11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOSのSafariでBack Forward Cacheにハマる

Last updated at Posted at 2017-04-05

iOSのSafariでBack Forward Cacheにハマる

背景

登録→確認→完了というオーソドックスな確認画面ありの登録フォームで、登録画面でのsubmit後の誤操作を防止するために、JavaScriptで動的に画面全体を透過divでロックする実装をしていました。

落とし穴

確認画面からSafariのブラウザの戻るで登録画面に戻るとBack Forward Cacheが発動して、フォームにデータが残った状態が復元されると同時に、透過divでの画面ロックも復元されて、何も操作を受け付けない状態にハマりました。(´・ω・`)

回避策

iOSのSafariではwindowのpageshowイベントでBack Forward Cacheから復元されたかどうかを検知できるようでしたので、例えばjQueryで以下のようにしてロックを解除する処理を追加しました。

$(function () {
    $(window).on('pageshow', function(event) {
        if (event.originalEvent.persisted) {
            // ここにBack Forward Cacheから復元された際の処理を記述する
        }
    });
});

11
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?