如何解决在 Chrome 扩展中存储对象:无法读取未定义的属性“推送”
我试图根据 this answer 在 Chrome 存储中存储对象。
更新存储
function updateLocalChromeStorage(key,obj) {
var myObjArray = [];
chrome.storage.local.get(key,function (result) {
if (result) {
myObjArray = result[key];
}
myObjArray.push(obj);
chrome.storage.local.set({ key: myObjArray });
});
}
function getCurrentTabUrl(callback) {
chrome.tabs.query({ active: true,currentwindow: true },function (tabs) {
var tab = tabs[0];
var url = new URL(tab.url)
var domain = url.hostname;
callback(domain);
});
}
点击事件
document.getElementById('save').addEventListener('click',function () {
if (document.getElementById('block').checked) {
getCurrentTabUrl(function (url) {
updateLocalChromeStorage('myObjArray',url);
});
}
});
出现错误 Error handling response: TypeError: Cannot read property 'push' of undefined
。
非常感谢任何帮助。谢谢
解决方法
尝试将“key”括在方括号中
function updateLocalChromeStorage(key,obj) {
var myObjArray = [];
chrome.storage.local.get([key],function (result) {
if (result[key]) {
myObjArray = result[key];
}
myObjArray.push(obj);
chrome.storage.local.set({ [key]: myObjArray });
});
}
,
通过重写点击事件并在事件中加入 updateLocalChromeStorage
函数活动,我找到了解决方法。
document.getElementById('save').addEventListener('click',function () {
if (document.getElementById('block').checked) {
getCurrentTabUrl(url => {
chrome.storage.sync.get('blockedUrl',({ blockedUrl = [] }) => {
blockedUrl.push([url]);
chrome.storage.sync.set({ blockedUrl });
});
})
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。