Сохранение объекта в расширении Chrome: невозможно прочитать свойство push of undefined
Я пытался сохранить объект в хранилище 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 });
});
}
Функция URL-адреса текущей вкладки
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
.
Любая помощь очень ценится. Спасибо
2 ответа
Я нашел способ обойти эту проблему, переписав событие щелчка и включив
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 });
});
})
}
});
Попробуйте заключить «ключ» в квадратные скобки.
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 });
});
}