Search code examples
javascriptgoogle-chromegoogle-chrome-extension

Getting cookies in a google chrome extension


I am trying to get a cookie specifically from a domain using this code:

<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>

The problem is that the alert always says undefined. However, if I change

ID = cookie.value;

to

alert(cookie.value);

it works properly. How do I save the value to use later?

Update: It appears that if I call alert(ID) from the chrome console after the script runs, it works. How can I set my code to wait until chrome.cookies.get finishes running?


Solution

  • Almost all Chrome API calls are asynchronous, so you need to use callbacks to run code in order:

    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);
    });