storage.onChanged

當針對某個儲存區域執行了 storageArea.setstorageArea.removestorageArea.clear 時觸發,並返回僅更改鍵的詳細資訊。僅當底層資料發生更改時,才會呼叫回撥函式。

注意:在 Firefox 中,返回的資訊包含針對 storageArea.set 執行的儲存區域內的所有鍵,無論它們是否更改。此外,在底層資料未更改時也可能會呼叫回撥函式。透過檢查每個返回鍵的 storage.StorageChange 物件來找到更改項的詳細資訊。請參閱 Firefox bug 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 語法

引數

監聽器

此事件發生時呼叫的函式。該函式會傳遞以下引數:

changes

object。描述更改的物件。每個屬性的名稱都是每個鍵的名稱。每個鍵的值是一個 storage.StorageChange 物件,描述該項的更改。

areaName

string。更改發生的儲存區域的名稱("sync""local""managed")。

示例

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