0

我试图根据这个答案将对象存储在 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

任何帮助深表感谢。谢谢

4

2 回答 2

0

我通过重写点击事件并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 });
            });
        })
    }
});
于 2021-06-30T14:03:14.757 回答
0

尝试将“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 });
    });
}
于 2021-06-29T18:18:27.627 回答