storage.onChanged
Wird ausgelöst, wenn storageArea.set
, storageArea.remove
, oder storageArea.clear
auf einen Speicherbereich ausgeführt wird und gibt Details nur über geänderte Schlüssel zurück. Ein Callback wird nur aufgerufen, wenn es Änderungen an den zugrunde liegenden Daten gibt.
Hinweis:
In Firefox enthält die zurückgegebene Information alle Schlüssel innerhalb des Speicherbereichs, gegen den storageArea.set
ausgeführt wurde, unabhängig davon, ob sie geändert wurden oder nicht. Außerdem kann ein Callback aufgerufen werden, wenn es keine Änderung an den zugrunde liegenden Daten gibt. Details zu den geänderten Elementen finden Sie, indem Sie jedes zurückgegebene storage.StorageChange
-Objekt des Schlüssels untersuchen. Siehe Firefox Bug 1833153.
Syntax
browser.storage.onChanged.addListener(listener)
browser.storage.onChanged.removeListener(listener)
browser.storage.onChanged.hasListener(listener)
Ereignisse haben drei Funktionen:
addListener(listener)
-
Fügt diesem Ereignis einen Listener hinzu.
removeListener(listener)
-
Stoppt das Lauschen auf dieses Ereignis. Das Argument
listener
ist der zu entfernende Listener. hasListener(listener)
-
Überprüft, ob
listener
für dieses Ereignis registriert ist. Gibttrue
zurück, wenn es zuhört, andernfallsfalse
.
addListener-Syntax
Parameter
listener
-
Die Funktion, die aufgerufen wird, wenn dieses Ereignis auftritt. Die Funktion erhält folgende Argumente:
changes
-
object
. Objekt, das die Änderung beschreibt. Der Name jeder Eigenschaft ist der Name jedes Schlüssels. Der Wert jedes Schlüssels ist einstorage.StorageChange
-Objekt, das die Änderung dieses Elements beschreibt. areaName
-
string
. Der Name des Speicherbereichs ("sync"
,"local"
, oder"managed"
), in dem die Änderungen vorgenommen wurden.
Browser-Kompatibilität
BCD tables only load in the browser
Beispiele
/*
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);
Beispielerweiterungen
Hinweis:
Diese API basiert auf der chrome.storage
API von Chromium. Diese Dokumentation ist abgeleitet von storage.json
im Chromium-Code.