Назад к блогу
Идентичность

Событие storage: согласованность вкладок и границы приватности

Используйте storage для обновлений одного источника, учитывая исключение окна-записывателя, разделы, задержки и приватность.

BotBrowser Team

Документация

Нужна структурированная документация по теме Идентичность?

Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.

Событие storage сообщает об изменении веб-хранилища, но не является общей транзакцией. Когда одно окно меняет localStorage, другие подходящие документы того же источника могут получить событие; окно, выполнившее запись, собственного события не получает. На доставку влияют источник, контекст и раздел хранения. BotBrowser может предоставить изолированные профильные фикстуры и записать видимые результаты, но не открывает хранилище другого источника и не гарантирует отсутствие гонок, порядок или сохранность после закрытия.

Одна Window записывает localStorage, подходящие Documents получают уведомление, а Window-записыватель события не получает

TL;DR

  • Изменение localStorage может уведомить другие Documents того же источника.
  • Window, выполняющая запись, не получает это событие.
  • sessionStorage имеет другой охват и не является общим каналом вкладок.
  • Событие не является журналом, транзакцией, доказательством личности или гарантией порядка.
  • Проверяйте наличие хранилища, учитывайте гонки и сохраняйте резервный путь.

Содержание

Что означает событие изменения хранилища

Получатель видит key, oldValue, newValue, storageArea и url, но не историю и не подтверждение сервера. Получатель может загрузиться после записи, быть приостановлен или закрыт. При необходимости перечитывайте текущее состояние. Window-записыватель обновляет свой интерфейс напрямую.

localStorage обычно общий для контекстов одного источника, а sessionStorage связан с верхним контекстом и обычно разделяет вкладки. См. WHATWG о веб-хранилище, справочник MDN о событии хранилища и MDN о веб-хранилище.

Уведомление не блокирует параллельные записи и не решает конфликт. Используйте ревизию, проверяйте значение и предлагайте слияние или повтор, когда две вкладки редактируют одну запись.

Источник, контекст и приватность

Схема, хост и порт образуют источник. Поддомены, порты, sandbox-фреймы, приватные окна и разделы хранения могут видеть разные значения. Наличие или отсутствие ключа не устанавливает личность: это может быть новый контекст, очистка или отказ в доступе.

Не синхронизируйте токены и приватные документы. Ограничивайте телеметрию целью и сроком. Принципы приватности W3C поддерживают минимизацию. Событие не авторизует операцию.

Интерфейс с учётом гонок и резерв

Начните с интерфейса, работающего без хранилища и событий. Проверьте доступ, обработайте ошибку квоты, обновите окно-записыватель и заставьте другие контексты перечитать запись. Объединяйте всплески, ограничивайте чтения и оставляйте доступный повтор. При отсутствии события используйте ручное обновление или проверку сервера.

Проверьте пустое хранилище, отказ, запись того же значения, removeItem, clear, повреждённые данные, старую ревизию, перезагрузку, скрытую вкладку и немедленное закрытие. Базовый контент должен оставаться доступным.

Тесты с BotBrowser

BotBrowser позволяет запускать изолированные фикстуры, наблюдать Window-записыватель и объявленные контексты, а также записывать видимые результаты. Он не открывает хранилище другого источника и не гарантирует отсутствие гонок, порядок событий или сохранность после закрытия. Используйте синтетические ключи и сохраняйте версию браузера, тестовый источник, контекст, ревизию, результат и резерв.

Итог

Событие хранилища является уведомлением одного источника с исключением окна-записывателя. Обновляйте себя локально, перечитывайте состояние в получателях и учитывайте гонки, разделы и жизненный цикл. Идентичность, авторизацию и сохранность нельзя выводить из события. BotBrowser делает авторизованные фикстуры повторяемыми, не меняя правил браузера.

Дополнительные материалы

Источники

#Storage Event#localStorage#Вкладки#Приватность#BotBrowser

Переведите BotBrowser из исследований в продакшн

Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.