javascript - 在谷歌浏览器扩展程序中获取 cookie

标签 javascript google-chrome google-chrome-extension

我正在尝试使用以下代码专门从域中获取 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>

问题是警报总是说未定义。但是,如果我改变

ID = cookie.value;

alert(cookie.value);

它正常工作。如何保存该值以备后用?

更新:看来,如果我在脚本运行后从 chrome 控制台调用 alert(ID),它就可以工作。如何设置我的代码以等待 chrome.cookies.get 完成运行?

最佳答案

几乎所有的 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);
});

关于javascript - 在谷歌浏览器扩展程序中获取 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5892176/

相关文章:

javascript - 如何从 Chrome 存储获取 JSON 数据

javascript - JavaScript 中的 HTML 错误

javascript - 在页面加载时加载模式并在 5 秒后重定向

javascript - Jquery 事件页面链接

javascript - 从外部循环访问变量

javascript - 无法从 selenium execute_script 访问 chrome 消息传递 API

html - Chrome的HTML5语音识别API实现中的语言代码是什么?

javascript - chrome 扩展命令(热键)

javascript - `chrome.webRequest.onBeforeRequest.removeListener` ? -- 如何停止 chrome 网络监听器

css - 如何破解 linear-gradient() with currentColor bug in chrome