Chrome拡張で設定などデータを保存したいときに、
どうすればいいかを調べてみたときの備忘録。
オプションに関しては、このあたりから読みはじめるとよさそう。
データ保存はchrome.storage
保存先にはいくつか種類があるので、
保存する内容や用途に応じて選択する必要がある。
- local .... 暗号化なし/localのみ/約5MBまで
- sync ... 暗号化なし/ログインアカウントで同期/約100KBまで
- sesssion ... メモリ上のみ
権限
権限にstorage
を付ける必要がある。
{ "name": "My extension", ... "permissions": [ "storage" ], ... }
使い方: 読み書き
chrome.storage.local.set({ key: value }).then(() => { console.log("Value is set to " + value); }); chrome.storage.local.get(["key"]).then((result) => { console.log("Value currently is " + result.key); });
使い方: 変更の検知
- background.jsなどでstorageの変更をlistenできる
chrome.storage.onChanged.addListener((changes, namespace) => { for (let [key, { oldValue, newValue }] of Object.entries(changes)) { console.log( `Storage key "${key}" in namespace "${namespace}" changed.`, `Old value was "${oldValue}", new value is "${newValue}".` ); } });
storageのスキーマ
- JSON Schemaを定義しておくことでChromeにvalidationしてもらえる
- Manifest for storage areas - Chrome Developers
{ "name": "My enterprise extension", "storage": { "managed_schema": "schema.json" }, ... }
以上!!