storage

允許擴充套件程式儲存和檢索資料,並監聽儲存項的變化。

儲存系統基於 Web Storage API,但有一些區別。其他區別包括:

  • 它是非同步的。
  • 值的作用域僅限於擴充套件程式,而不是特定的域(即,同一組鍵/值對可供後臺上下文和內容指令碼中的所有指令碼使用)。
  • 儲存的值可以是任何可 JSON 化的值,而不僅僅是 String。除了其他值之外,這還包括:ArrayObject,但前提是它們的內容可以表示為 JSON,這不包括 DOM 節點。您不需要在儲存之前將值轉換為 JSON String,但它們在內部表示為 JSON,因此有此要求,即它們必須是可 JSON 化的。
  • 可以在同一次 API 呼叫中設定或檢索多個鍵/值對。

要使用此 API,您需要在您的 manifest.json 檔案中包含 `"storage"` 許可權

每個擴充套件程式都有自己的儲存區域,可以分為不同型別的儲存。

雖然此 API 與 Window.localStorage 相似,但建議您不要在擴充套件程式程式碼中使用 Window.localStorage 來儲存與擴充套件程式相關的資料。Firefox 將在使用者出於隱私原因清除瀏覽歷史記錄和資料時清除使用 localStorage API 儲存的資料,而使用 storage.local API 儲存的資料將在此類情況下正確持久化。

您可以在開發者工具箱的“Storage Inspector”標籤頁下的“Extension Storage”專案中檢查儲存的資料,該工具箱可透過 about:debugging 訪問。

注意:儲存區域未加密,不應用於儲存機密的個人資訊。

型別

storage.StorageArea

表示儲存區域的物件。

storage.StorageChange

表示儲存區域發生更改的物件。

屬性

storage 有四個屬性,分別代表可用的不同型別的儲存區域。

storage.local

表示 local 儲存區域。local 儲存中的項僅限於安裝該擴充套件程式的機器。

storage.managed

表示 managed 儲存區域。managed 儲存中的項由域管理員設定,對擴充套件程式是隻讀的。嘗試修改此名稱空間將導致錯誤。

storage.session

表示 session 儲存區域。session 儲存中的項儲存在記憶體中,不會持久化到磁碟。

storage.sync

表示 sync 儲存區域。sync 儲存中的項由瀏覽器同步,並且對於使用者登入的同一瀏覽器所有例項(跨不同裝置)都可用。

事件

storage.onChanged

當任何儲存區域中的一項或多項發生更改時觸發。

擴充套件程式示例

瀏覽器相容性

注意:此 API 基於 Chromium 的 chrome.storage API。本文件源自 Chromium 程式碼中的 storage.json