卡在消息传递background.html>> contentscript.js(chrome扩展名)

时间:2012-01-13 23:40:02

标签: javascript google-chrome-extension message-passing

我知道它已经在这里好几千次,但我现在被困住了。我已经阅读了大量的答案并研究了code.google.com但没有成功。我正在尝试从background.htmlcontentscript.js的Chrome扩展程序中发送请求。我设法让它以另一种方式工作。

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 :(得分:0)

您的代码很好,您的触发器一定有问题。我使用你的代码创建了一个简单的扩展,它工作正常。将这两位添加到背景和内容中。然后在任何页面上选择rmb并选择“发送消息”。你应该收到警报。

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"});
        }
});