0

谷歌浏览器扩展消息传递问题:

在这个 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,我已将代码移至后台页面。但是,它仍然无法正常工作

4

1 回答 1

4

如果您将弹出页面附加到浏览器操作按钮,则不能有chrome.browserAction.onClicked监听器,它不会触发。

  • 删除弹出窗口,只留下按钮
  • 将所有内容移至背景页面。
  • 替换tab.idnull
  • 在开始时删除createFile();调用,因为在这种情况下它不会做任何事情(内容脚本还没有准备好收听)。
  • 不要使用警报来调试扩展,使用console.log().
于 2011-10-07T19:21:55.957 回答