このコードを使用して、ドメインから特に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);
});
Chrome.cookies.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>