storage
讓套件可以存讀資料以及監聽儲存項目的更動。
儲存系統基於 Web Storage API,有一些不同,包括:
- 非同步
- 值的作用域在套件而不是某個特定的網域(後端的所有腳本與內容腳本都可用同樣的鍵值)。
- 儲存的值可以是任何的 JSON-ifiable 值而並非只能是
String
。這包括了:陣列
、物件
。但只有在內容可以被以 JSON 表示的時候,這表示不包含 DOM 節點。你不需要特地把值轉爲 JSONStrings
來儲存它們,它們在內部就是以 JSON 來表示的。 - 同一個 API 呼叫中可以設置或取得複數鍵值。
要使用這個 API 你必須在 manifest.json 裡面加入 "storage" 的權限。
每個套件都有自己的儲存空間,它們可以被切分爲不同種類的儲存。
雖然這個 API 與Window.localStorage
很相似,建議你不要在套件裡使用 Window.localStorage
儲存套件相關資料。Firefox 在用戶由於隱私問題清除歷史記錄與資料時會清除 localStorage API 儲存的資料,而 storage.local
API 儲存的則會留著。
備註:儲存空間不會被加密,所以你不應該把它們用來儲存用戶的機密資料。
型別
storage.StorageArea
-
表示儲存空間的物件。
storage.StorageChange
-
表示儲存空間變化的物件。
屬性
storage
有三個屬性,各自表示不同種類的儲存空間。
storage.sync
-
表示
sync
儲存空間。sync
儲存空間裡的項目會被瀏覽器同步,所以可以跨裝置在所有已登入瀏覽器實例裡面使用。 storage.local
-
表示
local
儲存空間。local
儲存空間裡的項目會被侷限在安裝套件的機器上。 storage.managed
-
表示
managed
儲存空間。managed
儲存空間的項目由網域管理者設置而且對套件唯讀,修改這項會導致錯誤。
事件
storage.onChanged
-
當儲存空間裡的一個或更多項目被修改時觸發。
瀏覽器兼容性
BCD tables only load in the browser
範例擴充套件
備註: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.