storage

拡張機能にデータの保存、取得と、保存項目の変更をリッスンできるようにします。

ストレージのシステムは Web Storage API に基づいていますが、いくつか相違点があります。とりわけ、以下の違いがあります。

  • 非同期です。
  • 値は拡張機能のスコープで、特定ドメインのスコープではありません (つまりキー/値ペアーの同じ組み合わせが、すべてのバックグラウンドコンテキストとコンテンツスクリプトから利用できます)。
  • 保存された値は JSON-ifiable な (JSON 化できる) 値で、単なる String ではありません。とりわけ、ArrayObject も、コンテンツが JSON で表現できる時 (DOM ノードは入りません) を除いて不可です。値を保存する前に JSON Strings に変換する必要はなく、内部で JSON として表現されます、つまり JSON-ifiable である必要があります。
  • 複数のキー/値ペアーが同じ API 呼び出しで設定、取得できます。

この API を利用するためには"storage" permissionmanifest.json に含める必要があります。

各々の拡張機能は独自のストレージ領域を持っています。またそれらは異なる型のストレージに分割することができます。

Window.localStorageとこの API は似ていますが、拡張機能関連のデータを格納する際に拡張コード内で Window.localStorage を使わないことを推奨します。Firefox はプライバシー上の理由で、ブラウザー履歴やデータを消去などをする場合、localStorage API を利用して保存されたデータも消去します。しかし storage.local API を利用して保存されたデータはこれらの場合でも保持されます。

メモ: ストレージ領域内は暗号化されていないため、ユーザーの機密情報を保存すべきではありません。

storage.StorageArea

ストレージ領域を表すオブジェクト

storage.StorageChange

ストレージ領域の変更を表すオブジェクト

プロパティ

storage は 3 つのプロパティを持ち、異なる型の利用可能なストレージ領域を表しています。

storage.sync

sync ストレージ領域を表します。sync ストレージ内のアイテムはブラウザーによって同期され、異なるデバイス間でも、ログインしているユーザーのブラウザーのすべてのインスタンスを跨いで利用できるようになります。

storage.local

local ストレージ領域を表します。local ストレージ内のアイテムは拡張機能がインストールされているマシン内のみで扱えます。

storage.managed

managed ストレージ領域を表します。managed ストレージ内のアイテムはドメイン管理者によってセットされ、拡張機能は読取権限のみを持ちます。そのため、この名前空間を変更しようとするとエラーになります。

イベント

storage.onChanged

ストレージ領域内のアイテムを 1 つ以上変更した場合に発火します。

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Firefox for Android
Safari on iOS
storage
StorageArea
StorageArea.clear
StorageArea.get
Supports empty key
StorageArea.getBytesInUse
StorageArea.onChanged
StorageArea.remove
Supports empty key
StorageArea.set
StorageArea.setAccessLevel
StorageChange
local
local.clear
local.get
Supports empty key
local.getBytesInUse
local.onChanged
local.remove
Supports empty key
local.set
managed
managed.clear
managed.get
managed.getBytesInUse
managed.onChanged
managed.remove
managed.set
onChanged
session
session.QUOTA_BYTES
session.clear
session.get
Supports empty key
session.getBytesInUse
session.onChanged
session.remove
Supports empty key
session.set
session.setAccessLevel
sync
sync.clear
sync.get
Supports empty key
sync.getBytesInUse
sync.onChanged
sync.remove
Supports empty key
sync.set

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
See implementation notes.

Example extensions

メモ: この API は Chromium の chrome.storage API に基づいています。また、このドキュメントは storage.json における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。