передача сообщений в расширении Google Chrome - PullRequest
1 голос
/ 18 апреля 2011

Есть несколько вопросов по этому поводу, но ни один не отвечал моим потребностям.Я создал расширение и пытаюсь установить связь между скриптом содержимого и моим options.html.Я пытался использовать chrome.extension.onRequest.addListener и chrome.extension.sendRequest, и ни один не работает вообще.Никакие команды не выполнены или что-нибудь.Вот мой код:

скрипт содержания:

chrome.extension.sendRequest({command:value}, function(response) {});

options.html

chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
    alert("in onRequest request.command = " + request.command);
    decide_command(trim(request.value));
    sendResponse({});
});

Ни одно из предупреждений не выполняется, и ни одна из функций не выполняется.Я даже попытался использовать пример на странице API обмена сообщениями, и он не вызывал никаких предупреждений или чего-либо еще.Я пробовал несколько разных комбинаций, таких как добавление идентификатора расширения в sendRequest, чтобы убедиться, что он идет в нужное место, я исключил sendResponse, чтобы убедиться, что он не заканчивается слишком быстро.У меня повсюду оповещения об отладке, и ни одно из них не сработало, кроме тех, которые были до и после команды send request в моем скрипте контента.Так что я бы предположил, что он либо будет выполнен и потерпит неудачу, либо что-то в этом роде.Буду признателен за любую помощь, я работал над этим в течение нескольких дней.

1 Ответ

2 голосов
/ 20 апреля 2011

Я полагаю, что Крис уже заметил проблему: страница параметров расширения не работает постоянно и поэтому не может принимать или генерировать сообщения.Фоновые страницы лучше подходят для такого рода коммуникаций, поскольку они всегда работают, всегда доступны и, следовательно, всегда способны отвечать на сообщения.

Я бы посоветовал немного переработать архитектуру вашего расширения так, чтобы скрипт содержимогособирает соответствующую информацию и отправляет ее на фоновую страницу.Когда страница параметров открыта, она может запросить состояние на фоновой странице.В этом случае фоновая страница отвечает за поддержание состояния разумным образом и за передачу информации между другими частями вашего расширения.

Имеет ли это смысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...