storage.StorageArea.onChanged
当存储区域中的一个或多个项目发生变化时触发,返回已更改键的详细信息。与 storage.onChanged
相比,此事件允许您监听以下存储区域之一的变化:local
、managed
、session
和 sync
。
注意:在 Firefox 中,返回的信息包括存储区域中的所有键。此外,当底层数据没有发生变化时,也可能会调用回调函数。更改项的详细信息可以通过检查每个返回键的 storage.StorageChange
对象来找到。请参阅 Firefox 问题 1833153。
语法
js
// local can also be sync, managed, or session
browser.storage.local.onChanged.addListener(listener)
browser.storage.local.onChanged.removeListener(listener)
browser.storage.local.onChanged.hasListener(listener)
事件具有三个函数
addListener(listener)
-
向此事件添加一个监听器。
removeListener(listener)
-
停止监听此事件。
listener
参数是要移除的监听器。 hasListener(listener)
-
检查
listener
是否已注册到此事件。如果正在监听,则返回true
,否则返回false
。
addListener 语法
参数
listener
-
当此事件发生时调用的函数。该函数将传递以下参数
changes
-
object
. 描述更改的对象。它包含每个已更改键的一个属性。属性名称是已更改键的名称,其值为storage.StorageChange
对象,描述了对该项的更改。
示例
js
/*
Log the old value and its new value of
changes in the local storage.
*/
function logStorageChange(changes) {
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.local.onChanged.addListener(logStorageChange);
浏览器兼容性
BCD 表格仅在浏览器中加载
注意:此 API 基于 Chromium 的 chrome.storage
API。此文档源自 Chromium 代码中的 storage.json
。