如何异步使用chrome.cookies.getAll?

时间:2019-02-17 23:23:47

标签: javascript google-chrome cookies google-chrome-extension

我已尝试修改我的代码,使其看起来与此answer类似。

您好,尝试异步使用chrome.cookies.getAll时,我的代码似乎返回一个空数组。可能是我使用不正确,或者url没有通过。

chrome.history.onVisited.addListener(function(HistoryItem) {
    var cookies = {
        start: function(callback) {
            this.logCookies(HistoryItem.url,callback);
        },
        logCookies: function(url,callback) {
            chrome.cookies.getAll({
                'url': url
            }, function(cookie) {
                console.log(cookie) //log the cookie
            });
        }
    }
    cookies.start(function() {
        console.log('getting cookies...')
    });
});

我希望这不太含糊...我想做的是从当前访问的网站获取所有cookie并进行记录。 (我希望以后删除它们,但现在我想记录找到的每个cookie)。而是返回一个长度为0的空数组,并且getting cookies...不会显示在控制台中。我不确定自己做错了什么,在我看来我做对了所有事情。我是异步编码的新手,因此不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我发现了问题!原来我没有在清单中设置正确的权限,所以我对代码进行了调整以使用Promises,它可以正常工作!我也删除了每个cookie。

chrome.history.onVisited.addListener(function(HistoryItem) {
    var cookies = {

        start: function() {
            return this.logCookies();
        },

        logCookies: function() {

            return new Promise(function(resolve,reject){

                function remove(cookies){
                    for (var i = 0; i < cookies.length; i++) {
                        chrome.cookies.remove({url: HistoryItem.url + cookies[i].path, name: cookies[i].name},function(){
                            console.log('cookie removed!')
                        });
                    }
                    resolve()
                }

                chrome.cookies.getAll({
                    'url': HistoryItem.url
                }, function(cookies) {
                    remove(cookies)
                });

            })
        }
    }

    cookies.start().then(function(){
        console.log('removing cookies...')
    });

});