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

ストレージのシステムは 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つ以上変更した場合に発火します。

ブラウザ実装状況

ChromeEdgeFirefoxFirefox for AndroidOpera
StorageArea あり144548 あり
StorageChange あり144548 あり
local あり1445 *48 あり
managed あり なし57 * なし なし
onChanged あり144548 あり
sync あり1553 なし なし

Example extensions

Acknowledgements

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

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

ドキュメントのタグと貢献者

このページの貢献者: takubokudori, SphinxKnight, Uemmra3
最終更新者: takubokudori,