Застрял в передаче сообщений background.html >> contentscript.js (расширение Chrome) - PullRequest
1 голос
/ 14 января 2012

Я знаю, что здесь уже тысячу раз, но сейчас я застрял.Я прочитал много ответов и изучил code.google.com, но не смог.Я пытаюсь отправить запрос в расширении Chrome от background.html до contentscript.js.Мне удалось заставить его работать по-другому.

Код внутри background.html:

  chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
      console.log(response.farewell);
     });
  });

Код внутри contentscript.js:

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    if (request.greeting == "hello")
      sendResponse({farewell: "goodbye"});
    else
      sendResponse({farewell: "nope"});
});

manifest.json должно быть в порядке, так как связь работает в обратном направлении, а все остальное работает правильно.Спасибо!

1 Ответ

0 голосов
/ 14 января 2012

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

Background.html

var menuid = chrome.contextMenus.create({"title":"Send Message", "onclick": SendMessage, "documentUrlPatterns":["http://*/*"]});

function SendMessage() {        
    chrome.tabs.getSelected(null, function(tab) {
            chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
                console.log(response.farewell);
             });
    });
}

contentscript

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    if (request.greeting == "hello") {
            alert('hello');
      sendResponse({farewell: "goodbye"});
        }
    else
        {
            alert('goodbye');
      sendResponse({farewell: "nope"});
        }
});
...