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。