Получение файлов cookie в расширении Google Chrome
Я пытаюсь получить 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);
он работает правильно. Как сохранить значение для использования позже?
Обновление. Похоже, что если я вызываю предупреждение (ID) с консоли хром после запуска script, он работает. Как я могу настроить свой код на ожидание завершения работы chrome.cookies.get?
Ответы
Ответ 1
Почти все вызовы API Chrome асинхронны, поэтому вам нужно использовать обратные вызовы для запуска кода:
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);
});
Ответ 2
Любой код, зависящий от результата вызова 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>