sessionStorage のセッションとは
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ タブ
この記事を書いていたときに そういえば sessionStorage のセッションってどういう動きなのかイマイチよくわかってないと思って調べてみました
ひとことでまとめると セッション=タブ です
確認したのは Chrome と Firefox のみです
別のタブで同じページを開いても sessionStorage の値は別々です
sessionStorage のデータはそのタブが閉じられるまで有効で 閉じるとデータも消えます
タブを開いてる限り 別オリジンに行って戻ってきてもデータは残っています
コピーなので一方を変更してももう一方に影響はしません
内部的には「新規タブを」リンク先の URL で開いた扱いです
フレーム内で sessionStorage のデータを変更すればトップフレームの sessionStorage のデータも変更されます
ミドルクリックなどで別タブを開くと別プロセスです
なので 同じプロセスなら sessionStorage がコピーされたものと言えます
タスクマネージャで見た場合に ● が縦につながっているところです
ひとことでまとめると セッション=タブ です
確認したのは Chrome と Firefox のみです
ライフサイクル
新しいタブを作ると新規セッションとして空の sessionStorage が用意されます別のタブで同じページを開いても sessionStorage の値は別々です
sessionStorage のデータはそのタブが閉じられるまで有効で 閉じるとデータも消えます
タブを開いてる限り 別オリジンに行って戻ってきてもデータは残っています
ブラウザのタブの復元を使うと sessionStorage も復元されるようですが 拡張機能で単純に最後に閉じたタブの URL を新規タブで開く作りになっていた場合には復元されません
WebStorage なので同じセッションでも保存はオリジンごとに行われます
WebStorage なので同じセッションでも保存はオリジンごとに行われます
別タブ
target="_blank" など target を指定して別タブで開いた場合は 元タブの sessionStorage のデータがコピーされて引き継がれますコピーなので一方を変更してももう一方に影響はしません
タブのクローンでもコピーされて引き継がれます
ユーザ操作の別タブ
別タブで開くと言っても 右クリックで別タブで開くを選んだり ミドルクリックで開いた場合は引き継がれません内部的には「新規タブを」リンク先の URL で開いた扱いです
ミドルクリックしてしまうと target があっても引き継がれなくなるので タブの開き方で動きが違うということになる場合もあります
iframe
同じタブであれば iframe 内でも sessionStorage は共有ですフレーム内で sessionStorage のデータを変更すればトップフレームの sessionStorage のデータも変更されます
プロセス
Chrome では target で別タブを開いたりタブのクローンをすると同じプロセスになりますミドルクリックなどで別タブを開くと別プロセスです
なので 同じプロセスなら sessionStorage がコピーされたものと言えます
タスクマネージャで見た場合に ● が縦につながっているところです