хранилище
Позволяет расширениям сохранять и извлекать данные, а также прослушивать изменения сохранённых элементов.
Система хранения основана на API веб-хранилища, с некоторыми отличиями. Среди прочих отличий:
- Она асинхронна.
- Значения ограничены расширением, а не конкретным доменным именем (то есть один и тот же набор пар «ключ-значение» доступен всем скриптам в контексте фоновых процессов и скриптах содержимого).
- Сохраняемые значения могут быть любым JSON-совместимым значением, а не только
String. В том числе:ArrayиObject, но только если их содержимое можно представить в формате JSON, что не включает узлы DOM. Вам не нужно преобразовывать свои значения в JSONStringsперед их сохранением, но они представлены в формате JSON во внутреннем представлении, поэтому требуется, чтобы они были JSON-совместимыми. - Несколько пар «ключ-значение» могут быть установлены или извлечены в одном вызове API.
Для использования этого API вам необходимо включить "storage" разрешение в вашем файле manifest.json.
Каждое расширение имеет свою область хранения, которую можно разделить на разные типы хранения.
Хотя этот API похож на Window.localStorage, рекомендуется не использовать Window.localStorage в коде расширения для хранения данных, связанных с расширением. Firefox очистит данные, сохранённые расширениями с помощью API localStorage в различных сценариях, когда пользователи очищают историю просмотров и данные для обеспечения конфиденциальности, в то время как данные, сохранённые с помощью API storage.local, будут правильно сохранены в этих сценариях.
Вы можете просмотреть сохранённые данные в элементе «Хранилище расширения» в вкладке «Инспектор хранилища» Инспектора хранилища в инструментах разработчика, доступных из about:debugging.
Примечание: Область хранения не зашифрована и не должна использоваться для хранения конфиденциальной информации пользователя.
Типы
storage.StorageArea-
Объект, представляющий область хранения.
storage.StorageChange-
Объект, представляющий изменение в области хранения.
Свойства
storage имеет четыре свойства, представляющие различные типы доступных областей хранения.
storage.local-
Представляет локальную область хранения. Элементы в
localхранилище локальны для компьютера, на котором было установлено расширение. storage.managed-
Представляет область хранения
managed. Элементы вmanagedхранилище устанавливаются администратором домена и являются только для чтения для расширения. Попытка изменить этот пространство имён приводит к ошибке. storage.session-
Представляет сессионную область хранения. Элементы в
sessionхранилище хранятся в памяти и не сохраняются на диск. storage.sync-
Представляет область синхронизации
sync. Элементы вsyncхранилище синхронизируются браузером и доступны во всех экземплярах этого браузера, в которые вошел пользователь, на разных устройствах.
События
storage.onChanged-
Срабатывает, когда один или несколько элементов меняются в любой из областей хранения.
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | |
StorageArea |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
StorageChange |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
local |
Да | 14 | 45API хранилища поддерживается в скриптах содержимого начиная с версии 48. |
? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
managed |
Да | 79 | 45["Не поддерживаются платформенно-специфические бэкэнды хранилища, такие как ключи реестра Windows.", "Не поддерживается принудительное выполнение схем хранилища, предоставляемых расширением.", "СобытиеonChanged не поддерживается."] |
? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
onChanged |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
session |
102До версии 112 лимит квоты хранилища составлял 1 МБ. |
102До версии 112 лимит квоты хранилища составлял 1 МБ. |
Нет | ? | 88До версии 98 лимит квоты хранилища составлял 1 МБ. |
16.4 | ? | ? | Нет | ? | 16.4 | ? |
sync |
Да | 15 | 53До версии 79 лимит квоты хранилища не применялся. |
? | Нет | 14["Safari не синхронизирует элементы, сохранённые вsync хранилище, т. е. он ведет себя так же, как local хранилище.", "Safari 15 и 15.1 ошибочно сохраняют элементы синхронизации в local хранилище. Если элементы синхронизации не найдены, проверьте их в local хранилище и выполните одноразовую миграцию в sync хранилище."] |
? | ? | Нет | ? | 15["Safari не синхронизирует элементы, сохранённые вsync хранилище, т. е. он ведет себя так же, как local хранилище.", "Safari 15 и 15.1 ошибочно сохраняют элементы синхронизации в local хранилище. Если элементы синхронизации не найдены, проверьте их в local хранилище и выполните одноразовую миграцию в sync хранилище."] |
? |
Примеры расширений
- annotate-page
- favourite-colour
- forget-it
- navigation-stats
- proxy-blocker
- quicknote
- stored-credentials
Примечание: Этот API основан на API хранилища Chromium. Данная документация взята из storage.json кода Chromium.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage