我认为chrome.storage
API(here)的文档目前尚不清楚。我正在使用此代码添加一个监听器:
chrome.storage.onChanged.addListener(function(changes, namespace) {
for (key in changes) {
var storageChange = changes[key];
console.log('Storage key "%s" in namespace "%s" changed. ' +
'Old value was "%s", new value is "%s".',
key,
namespace,
storageChange.oldValue,
storageChange.newValue);
}
});
但是如何删除这个监听器呢?如何使用chrome.storage.onChanged.removeListener()
方法?
答案 0 :(得分:1)
chrome.storage.onChanged.removeListener
将您添加的侦听器函数作为输入,因此要在以后删除它,您必须将该函数存储在变量中。以下代码将起作用:
var myListenerFunction = function(changes, namespace) {
for (key in changes) {
var storageChange = changes[key];
console.log('Storage key "%s" in namespace "%s" changed. ' +
'Old value was "%s", new value is "%s".',
key,
namespace,
storageChange.oldValue,
storageChange.newValue);
}
};
// Add listener
chrome.storage.onChanged.addListener(myListenerFunction);
// Change value, will show output in console.log
chrome.storage.sync.set({'value': 'asd'});
// Remove listener
chrome.storage.onChanged.removeListener(myListenerFunction);
// Change value, will NOT show output in console.log as listener was removed
chrome.storage.sync.set({'value': 'asd123'});
其他阅读 - Chrome扩展程序规范的事件部分 - https://developer.chrome.com/extensions/events
答案 1 :(得分:0)
我在您提供的页面中没有看到chrome.storage.onChanged.removeListener。
您可以尝试将回调函数分配给变量并将其传递给AddListener。然后用它来删除
var changeListener = function(changes, namespace) {
for (key in changes) {
var storageChange = changes[key];
console.log('Storage key "%s" in namespace "%s" changed. ' +
'Old value was "%s", new value is "%s".',
key,
namespace,
storageChange.oldValue,
storageChange.newValue);
}
};
chrome.storage.onChanged.removeListener(changeListner);