Помогите с передачей сообщений расширения chrome - PullRequest
2 голосов
/ 28 августа 2010

Я пытаюсь получить строку значений из фоновой страницы в свой контент-скрипт в создаваемом мной расширении Google Chrome.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь получить значение для скрипта контента, он не работает. Вот код

var list1 = "";
chrome.extension.sendRequest({action: 'list'}, function(response) {
      list1 = response.data;
   alert("hey from inside:" + list1 +":"+response.data);
});
alert(list1);

В первом появившемся предупреждении правильно отображается «эй изнутри» и список, который я хочу иметь в скрипте содержимого. Но затем, когда я пытаюсь предупредить переменную, в которой я его хранил, из-за пределов этого запроса, список не отображается.

Пожалуйста, помогите

1 Ответ

3 голосов
/ 28 августа 2010

Большинство (если не все) API расширений Chrome имеют значение asynchronous. Когда ваш sendRequest будет уволен, предупреждение сработает. В этом случае это будет пустая строка. Вы не можете гарантировать доставку list1, из-за этой asynchronous природы.

Теперь, что вы можете сделать, это перестроить ваш код, чтобы вы могли воспользоваться асинхронным вопросом. Например:

content_script.js

chrome.extension.sendRequest({action: 'list'}, function(response) {
   onListReceived(response.data)
});

function onListReceived(list) {
  alert(list);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...