storage.onChanged
當針對某個儲存區域執行了 storageArea.set、storageArea.remove 或 storageArea.clear 時觸發,並返回僅更改鍵的詳細資訊。僅當底層資料發生更改時,才會呼叫回撥函式。
注意:在 Firefox 中,返回的資訊包含針對 storageArea.set 執行的儲存區域內的所有鍵,無論它們是否更改。此外,在底層資料未更改時也可能會呼叫回撥函式。透過檢查每個返回鍵的 storage.StorageChange 物件來找到更改項的詳細資訊。請參閱 Firefox bug 1833153。
語法
js
browser.storage.onChanged.addListener(listener)
browser.storage.onChanged.removeListener(listener)
browser.storage.onChanged.hasListener(listener)
事件有三個函式
addListener(listener)-
向此事件新增監聽器。
removeListener(listener)-
停止監聽此事件。
listener引數是要移除的監聽器。 hasListener(listener)-
檢查
listener是否已為此事件註冊。如果正在監聽,則返回true,否則返回false。
addListener 語法
引數
監聽器-
此事件發生時呼叫的函式。該函式會傳遞以下引數:
changes-
object。描述更改的物件。每個屬性的名稱都是每個鍵的名稱。每個鍵的值是一個storage.StorageChange物件,描述該項的更改。 areaName-
string。更改發生的儲存區域的名稱("sync"、"local"或"managed")。
示例
js
/*
Log the storage area that changed,
then for each item changed,
log its old value and its new value.
*/
function logStorageChange(changes, area) {
console.log(`Change in storage area: ${area}`);
const changedItems = Object.keys(changes);
for (const item of changedItems) {
console.log(`${item} has changed:`);
console.log("Old value: ", changes[item].oldValue);
console.log("New value: ", changes[item].newValue);
}
}
browser.storage.onChanged.addListener(logStorageChange);
擴充套件程式示例
瀏覽器相容性
載入中…
注意:此 API 基於 Chromium 的 chrome.storage API。本文件源自 Chromium 程式碼中的 storage.json。