Можно ли напрямую использовать и использовать sessionStorage между несколькими вкладками?

Во-первых, давайте разберемся, что такое sessionStorage на следующей странице.

1. Текущее значение sessionStorage страницы A равно 123. Я обновляю страницу с помощью клавиши F5. Значение sessionStorage все еще существует?

Ответ: Да.

2. Текущее значение sessionStorage страницы A равно 123. Я копирую адрес страницы A, открываю новую страницу TAB в браузере и вставляю адрес для доступа к странице A. Значение sessionStorage 123 все еще существует?

Ответ: Нет.

Открытие нескольких страниц вкладок с одним и тем же URL-адресом приведет к созданию собственного файла  sessionStorage.

 3. Текущее значение sessionStorage страницы A — 123. Я закрываю вкладку страницы A и использую страницу истории открытий браузера для восстановления страницы A. Значение sessionStorage все еще существует?

Ответ: Да.

Сеанс страницы сохраняется, пока открыт браузер, а перезагрузка или восстановление страницы сохранит исходный сеанс страницы.

4. Можно ли напрямую использовать и использовать sessionStorage между несколькими вкладками?

Хорошо, вернемся к самому вопросу: «Можно ли напрямую использовать и использовать sessionStorage между несколькими вкладками?» Не говорите сразу «нет». Ответ на этот вопрос займет несколько минут. 

Ситуация 1. Можно ли напрямую использовать и использовать сессионное хранилище страниц с разными доменными именами?

Ответ: Нет.

 Сценарий 2. Можно ли напрямую использовать и использовать sessionStorage страниц с одним и тем же доменным именем?

Здесь много ситуаций:

Следующие A и B находятся под одним и тем же доменным именем. В качестве примера возьмем значение sessionStorage "window.sessionStorage.setItem("Это первая страница", "123")".

1. На странице A нажмите кнопку, чтобы вызвать window.open('./B.html) для открытия страницы B. Мы видим, что sessionStorage на странице B совпадает с sessionStorage на странице A.

Открытие через тег аналогично window.open

<a href="./B.html" target="_block">这是跳转B页面的a标签</a>

Ответ: Страница B может получить доступ к значению sessionStorage страницы A.

 

Вышеописанная ситуация поднимает новый вопрос: разделяет ли страница Б хранилище сеансов напрямую со страницей А? Или скопировать копию sessionStorage страницы A и поместить ее на страницу B?

Процесс исследования: мы выполняем window.sessionStorage.setItem("Это первая страница", "456") на странице A и изменяем значение sessionStorage. Мы видим, что sessionStorage страницы A изменилась, и в разделе When the session значение хранилища страницы A по-прежнему равно 123, значение хранилища сеансов страницы B, открытой через window.open, по-прежнему равно 123.

2. На странице А есть значение sessionStorage. Мы напрямую копируем адрес страницы Б и создаем новую вкладку в том же окне браузера. Введите адрес страницы Б и нажмите Enter, чтобы открыть страницу Б.

Ответ: Страница B не может скопировать значение sessionStorage, доступное на странице A.

На основании вышеизложенной ситуации делаем вывод:

SessionStorage разных доменных имен не может использоваться совместно, а состояние sessionStorage не может использоваться несколькими окнами одного и того же доменного имени! ! !

Но в некоторых конкретных сценариях: страница того же происхождения, открытая как новая вкладка или окно на этой странице, скопирует sessionStorage предыдущей страницы. Но это всего лишь копия. Если sessionStorage изменен на странице A, значение sessionStorage открытой страницы B будет соответствующим образом обновлено, если только вы не откроете новую страницу B на странице A.

рекомендация

отblog.csdn.net/tt18473481961/article/details/131569918