まず、次のページで sessionStorage とは何かを理解しましょう。
1. ページ A の現在の sessionStorage 値は 123 です。F5 キーでページを更新しました。sessionStorage 値はまだ存在しますか?
答え: はい。
2. ページ A の現在の sessionStorage 値は 123 です。ページ A のアドレスをコピーし、ブラウザで新しい TAB ページを開き、アドレスを貼り付けてページ A にアクセスします。sessionStorage 値 123 はまだ存在しますか?
答え: いいえ。
同じ URL で複数のタブ ページを開くと、独自の .html が作成されます
sessionStorage
。
3. ページ A の現在の sessionStorage 値は 123 です。ページ A のタブを閉じ、ブラウザの開いた履歴ページを使用してページ A を復元します。sessionStorage 値はまだ存在しますか?
答え: はい。
ページ セッションはブラウザーが開いている間維持され、ページを再読み込みまたは復元すると、元のページ セッションが維持されます。
4. 複数のタブ間の sessionStorage を直接共有してアクセスできますか?
さて、「複数のタブ間の sessionStorage は直接共有してアクセスできますか?」という質問に戻りますが、すぐに「いいえ」と言うのはやめてください。この質問への答えには数分かかります。
状況 1: 異なるドメイン名を持つページの sessionStorage を直接共有してアクセスできますか?
答え: いいえ。
シナリオ 2: 同じドメイン名を持つページの sessionStorage を直接共有してアクセスできますか?
ここには多くの状況があります。
次の A と B は両方とも同じドメイン名の下にあります。例として、sessionStorage 値「window.sessionStorage.setItem("This is the first page", "123")」を取り上げます。
1. ページ A で、ボタンをクリックして window.open('./B.html) を呼び出し、ページ B を開きます。ページ B の sessionStorage がページ A の sessionStorage と同じであることがわかります。
タグを介して開くことは window.open と同じです
<a href="./B.html" target="_block">这是跳转B页面的a标签</a>
回答: ページ B はページ A の sessionStorage 値にアクセスできます。
上記の状況から、ページ B はページ A のセッション ストレージを直接共有しているのかという新たな疑問が生じます。それとも、ページ A の sessionStorage のコピーをコピーして、ページ B に配置しますか?
探索プロセス: ページ A で window.sessionStorage.setItem("This is the first page", "456") を実行し、sessionStorage の値を変更します。ページ A の sessionStorage が変更されたことがわかります。ページ A のストレージ値は 123 のままで、window.open を通じて開かれたページ B のセッション ストレージ値は 123 のままです。
2. ページ A に sessionStorage 値があります。ページ B のアドレスを直接コピーし、ブラウザの同じウィンドウに新しいタブ ページを作成します。ページ B のアドレスを入力して Enter キーを押し、ページ B を開きます。
回答: ページ B は、ページ A にアクセスされた sessionStorage 値をコピーできません。
上記の状況に基づいて、次の結論を導き出します。
異なるドメイン名の SessionStorage を共有したり、同じドメイン名の複数のウィンドウ間で sessionStorage の状態を共有したりすることはできません。!!
ただし、特定のシナリオでは、このページで新しいタブまたはウィンドウとして開かれた同じオリジンのページは、前のページの sessionStorage
“
をコピーします。”
A ページで sessionStorage が変更されると、A ページで新しい B ページを開かない限り、開いている B ページの sessionStorage 値もそれに応じて更新されます。