storage.StorageArea.onChanged
当存储区域中的一个或多个项目更改时触发,返回更改键的详细信息。与 storage.onChanged 相比,此事件允许您侦听其中一个存储区域的更改:local、managed、session 和 sync。
注意:在 Firefox 中,返回的信息包括存储区域内的所有键。此外,当底层数据没有更改时,也可能调用回调。通过检查每个返回键的 storage.StorageChange 对象可以找到已更改项目的详细信息。请参阅 Firefox bug 1833153。
Firefox 仅在重新启动时加载托管存储内容(来自 JSON manifest (native manifest) 文件 或 3rdparty enterprise policy)的更改。因此,此事件在 Firefox 中永远不会触发。
语法
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 语法
参数
监听器-
当此事件发生时调用的函数。该函数将传递此参数
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);
浏览器兼容性
加载中…
注意:此 API 基于 Chromium 的 chrome.storage API。本文档摘自 Chromium 代码中的 storage.json。