storage

讓套件可以存讀資料以及監聽儲存項目的更動。

儲存系統基於 Web Storage API (en-US),有一些不同,包括:

  • 非同步
  • 值的作用域在套件而不是某個特定的網域(後端的所有腳本與內容腳本都可用同樣的鍵值)。
  • 儲存的值可以是任何的 JSON-ifiable 值而並非只能是 String。這包括了: 陣列物件 (en-US)。但只有在內容可以被以 JSON 表示的時候,這表示不包含 DOM 節點。你不需要特地把值轉爲 JSON Strings來儲存它們,它們在內部就是以 JSON 來表示的。
  • 同一個 API 呼叫中可以設置或取得複數鍵值。

要使用這個 API 你必須在 manifest.json 裡面加入 "storage" 的權限 (en-US)

每個套件都有自己的儲存空間,它們可以被切分爲不同種類的儲存。

雖然這個 API 與Window.localStorage很相似,建議你不要在套件裡使用 Window.localStorage 儲存套件相關資料。Firefox 在用戶由於隱私問題清除歷史記錄與資料時會清除 localStorage API 儲存的資料,而 storage.local API 儲存的則會留著。

備註: 儲存空間不會被加密,所以你不應該把它們用來儲存用戶的機密資料。

型別

storage.StorageArea (en-US)

表示儲存空間的物件。

storage.StorageChange (en-US)

表示儲存空間變化的物件。

屬性

storage 有三個屬性,各自表示不同種類的儲存空間。

storage.sync (en-US)

表示 sync 儲存空間。sync 儲存空間裡的項目會被瀏覽器同步,所以可以跨裝置在所有已登入瀏覽器實例裡面使用。

storage.local

表示 local 儲存空間。local 儲存空間裡的項目會被侷限在安裝套件的機器上。

storage.managed (en-US)

表示 managed 儲存空間。managed 儲存空間的項目由網域管理者設置而且對套件唯讀,修改這項會導致錯誤。

事件

storage.onChanged (en-US)

當儲存空間裡的一個或更多項目被修改時觸發。

瀏覽器兼容性

BCD tables only load in the browser

Example extensions

備註: This API is based on Chromium's chrome.storage API. This documentation is derived from storage.json in the Chromium code.

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.