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