storage.StorageArea.onChanged

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

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