Во-первых, давайте разберемся, что такое 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.