storage.StorageArea.onChanged

当存储区域中的一个或多个项目更改时触发,返回更改键的详细信息。与 storage.onChanged 相比,此事件允许您侦听其中一个存储区域的更改:localmanagedsessionsync

注意:在 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