Передача сообщений в Chrome - PullRequest
       22

Передача сообщений в Chrome

1 голос
/ 17 августа 2010

Не сомневайтесь в том, как передача сообщений работает в Chrome с использованием содержимого.Я изменил пример по умолчанию (http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/messaging/timer/) для передачи сообщений, указанной в документации chromium, на тот, который выглядит ниже:

popup.html

function testRequest() {

  chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, {counter: "getHTML"}, function handler(response) {
      alert("Inside Client = "+response.counter2);
    });
  });
}

, и мой скрипт содержимого выглядитнапример:

page.js

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    alert(request.counter);
    alert("Inside server .. Req Counter = "+request.counter);
    sendResponse({counter2: "5"});
  });

Когда я выполняю testRequest из popup.html, скрипт контента вызывается, как и ожидалось. Я получаю оба оповещения, которые я объявил с помощьюих соответствующие значения. Но мой код ответа popup.html, по-видимому, не вызывается .. Предупреждение, которое есть внутри popup.html - alert("Inside Client = "+response.counter2);, не выполняется.

С другой стороны, если у меня естьточка отладки внутри клиента, она работает! Какая-то странная .. Может кто-нибудь сказать мне, как и почему это происходит?

Заранее спасибо ..

Ответы [ 2 ]

1 голос
/ 17 августа 2010

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

Поверьте мне, когда я говорю это, я был озадачен, почему это не сработало. Оказалось, что я запускаю действие браузера на chrome: // extensions / page. В Chrome Extensions API не позволяет вам выполнять или отправлять какие-либо запросы на эту страницу. Сделайте это на обычной странице, такой как Google.com, и вы увидите всплывающее окно.

Невозможно отобразить диалоговое окно с предупреждением на всплывающей странице.

Вот почему вы не видите: alert("Inside Client = "+response.counter2); }

Если вы хотите, чтобы он работал, вы можете добавить консольный логгер и просмотреть его в веб-инспекторе. Заменить предупреждение на: console.log(response.counter2);

0 голосов
/ 01 сентября 2010

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

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

Я почти уверен, что нет проблем с созданием оповещений на фоновой странице.

...