chrome.storage.onChanged
事件是 Chrome 扩展 API 的一部分,用于监听存储区域(如 chrome.storage.sync
或 chrome.storage.local
)中的数据变化。如果你发现 chrome.storage.onChanged
不支持 Chrome 扩展,可能是以下几个原因:
确保你在扩展的 manifest.json
文件中正确声明了对 storage
权限的需求。
{
"name": "Your Extension",
...
"permissions": [
"storage"
],
...
}
chrome.storage.onChanged
需要在扩展的背景脚本(background script)或其他持久性脚本中设置监听器。如果你在非持久性上下文中(如弹出窗口脚本或选项页面脚本)设置监听器,可能会遇到问题。
chrome.storage.onChanged.addListener(function(changes, namespace) {
for (let [key, {oldValue, newValue}] of Object.entries(changes)) {
console.log(`Storage key "${key}" in namespace "${namespace}" changed.`
+ `Old value was "${oldValue}", new value is "${newValue}".`);
}
});
确保你的扩展已经正确加载并且处于激活状态。你可以在 Chrome 的扩展管理页面(chrome://extensions/
)检查扩展的状态。
虽然 chrome.storage.onChanged
是 Chrome 扩展 API 的标准部分,但理论上可能存在浏览器兼容性问题。确保你正在使用的 Chrome 版本支持该 API。
检查你的代码是否有语法错误或其他逻辑错误,这可能导致监听器无法正常工作。
以下是一个完整的示例,展示了如何在背景脚本中设置 chrome.storage.onChanged
监听器:
background.js
chrome.storage.onChanged.addListener(function(changes, namespace) {
for (let [key, {oldValue, newValue}] of Object.entries(changes)) {
console.log(`Storage key "${key}" in namespace "${namespace}" changed.`
+ `Old value was "${oldValue}", new value is "${newValue}".`);
}
});
manifest.json
{
"manifest_version": 3,
"name": "Storage Change Listener",
"version": "1.0",
"background": {
"service_worker": "background.js"
},
"permissions": [
"storage"
]
}
领取专属 10元无门槛券
手把手带您无忧上云