storage.onChanged
当 storageArea.set
、storageArea.remove
或 storageArea.clear
对存储区域执行时触发,仅返回已更改键的详细信息。回调函数仅在底层数据发生更改时才会被调用。
注意:在 Firefox 中,返回的信息包括对 storageArea.set
执行的存储区域中的所有键,无论它们是否发生更改。此外,即使底层数据没有发生更改,也可能会调用回调函数。可以通过检查每个返回的键的 storage.StorageChange
对象来查看已更改项的详细信息。请参见 Firefox 错误 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 语法
参数
listener
-
此事件发生时调用的函数。此函数传递以下参数
changes
-
object
。描述更改的对象。每个属性的名称都是每个键的名称。每个键的值都是一个storage.StorageChange
对象,描述对该项的更改。 areaName
-
string
。已进行更改的存储区域的名称("sync"
、"local"
或"managed"
)。
浏览器兼容性
BCD 表格仅在浏览器中加载
示例
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
。