storage.onChanged

storageArea.setstorageArea.removestorageArea.clear 对存储区域执行时触发,仅返回已更改键的详细信息。回调函数仅在底层数据发生更改时才会被调用。

注意:在 Firefox 中,返回的信息包括对 storageArea.set 执行的存储区域中的所有键,无论它们是否发生更改。此外,即使底层数据没有发生更改,也可能会调用回调函数。可以通过检查每个返回的键的 storage.StorageChange 对象来查看已更改项的详细信息。请参见 Firefox 错误 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 语法

参数

listener

此事件发生时调用的函数。此函数传递以下参数

changes

object。描述更改的对象。每个属性的名称都是每个键的名称。每个键的值都是一个 storage.StorageChange 对象,描述对该项的更改。

areaName

string。已进行更改的存储区域的名称("sync""local""managed")。

浏览器兼容性

BCD 表格仅在浏览器中加载

示例

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