消息从Chrome扩展程序中的内容脚本传递到背景页面

时间:2011-10-07 18:35:50

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

Google Chrome扩展程序消息传递问题:

在此Chrome扩展程序中

我的弹出页面:

chrome.browserAction.onClicked.addListener(getMessage);
getMessage();

function getMessage()
{
    chrome.tabs.getSelected(null, function(tab) {
        chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
            console.log(response.farewell);
        });//getting response from content script
    });
}

我的剧本页面

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

我没有收到内容脚本的任何回复。

编辑:

根据@ serg ,我已将代码移至后台页面。但是,它仍然无法正常工作

1 个答案:

答案 0 :(得分:4)

如果您在浏览器操作按钮上附加了弹出页面,则不能拥有chrome.browserAction.onClicked侦听器,它不会触发。

  • 删除弹出窗口,只留下按钮
  • 将所有内容移至后台页面。
  • tab.id替换为null
  • 在开头删除createFile();来电,因为在这种情况下它不会执行任何操作(内容脚本尚未准备好收听)。
  • 请勿使用警报调试扩展程序,请使用console.log()