Chrome 在谷歌浏览器扩展中获取cookie

lmyy7pcs  于 2022-12-06  发布在  Go
关注(0)|答案(3)|浏览(549)

我正在尝试使用以下代码从域中获取专门的Cookie:

<script language="javascript" type="text/javascript">

var ID;

function getCookies(domain, name) {
    chrome.cookies.get({"url": domain, "name": name}, function(cookie) {
        ID = cookie.value;
    });
}

getCookies("http://www.example.com", "id")
alert(ID);

</script>

问题是警告总是说undefined。

ID = cookie.value;

alert(cookie.value);

它工作正常。我如何保存该值以供以后使用?
更新:如果我在脚本运行后从chrome控制台调用alert(ID),它似乎可以工作。我如何设置我的代码等待chrome.cookie.get完成运行?

bsxbgnwa

bsxbgnwa1#

几乎所有的Chrome API调用都是异步的,因此您需要使用回调来按顺序运行代码:

function getCookies(domain, name, callback) {
    chrome.cookies.get({"url": domain, "name": name}, function(cookie) {
        if(callback) {
            callback(cookie.value);
        }
    });
}

//usage:
getCookies("http://www.example.com", "id", function(id) {
    alert(id);
});
disho6za

disho6za2#

任何依赖于chrome.cookie.get()调用结果的代码都必须从回调中调用。在您的示例中,只需等待回调触发,然后再显示警告:

<script language="JavaScript" type="text/javascript">

    var ID;

    function getCookies(domain, name) 
    {
        chrome.cookies.get({"url": domain, "name": name}, function(cookie) {
            ID = cookie.value;
            showId();
        });
    }

    function showId() {
        alert(ID);
    }

    getCookies("http://www.example.com", "id")        

</script>
nhhxz33t

nhhxz33t3#

要获取某个域下的所有Cookie:

const r = await chrome.cookies.getAll({ domain: domain }) //domain: stackoverflow.com

此脚本可以从弹出窗口和后台服务工作进程运行,但不能从内容脚本运行。

相关问题