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 つ以上変更した場合に発火します。

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxOperaAndroid 版 Firefox
StorageAreaChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 48
StorageChangeChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 48
localChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45
補足
完全対応 45
補足
補足 The storage API is supported in content scripts from version 48.
Opera 完全対応 ありFirefox Android 完全対応 48
managedChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 57
補足
完全対応 57
補足
補足 Platform-specific storage backends, such as Windows registry keys, are not supported.
補足 Enforcement of extension-provided storage schemas is not supported.
補足 The onChanged event is not supported.
Opera 未対応 なしFirefox Android 未対応 なし
onChangedChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 48
syncChrome 完全対応 ありEdge 完全対応 15Firefox 完全対応 53Opera 未対応 なしFirefox Android 未対応 なし

凡例

完全対応  
完全対応
未対応  
未対応
実装ノートを参照してください。
実装ノートを参照してください。

Example extensions

Acknowledgements

この API は Chromium の chrome.storage API に基づいています。また、このドキュメントは storage.json における Chromium のコードに基づいています。

Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。