Javascript 在Chrome Extensions中从内容脚本传递到后台页面的消息 Google Chrome Extensions消息传递问题:

Javascript 在Chrome Extensions中从内容脚本传递到后台页面的消息 Google Chrome Extensions消息传递问题:,javascript,google-chrome-extension,message-passing,Javascript,Google Chrome Extension,Message Passing,在这个Chrome扩展中 我的弹出页面: chrome.browserAction.onClicked.addListener(getMessage); getMessage(); function getMessage() { chrome.tabs.getSelected(null, function(tab) { chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {

在这个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({}); 
  });
我的脚本页面:

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,我已将代码移到背景页。但是,它仍然不起作用

您不能使用
chrome.browserAction.onclick
listener如果您将弹出页面附加到浏览器操作按钮,它将不会启动

  • 删除弹出窗口,只保留按钮
  • 将所有内容移到背景页
  • tab.id
    替换为
    null
  • 删除
    createFile()在开始时调用,因为在这种情况下它不会做任何事情(内容脚本尚未准备好侦听)
  • 不要将警报用于调试扩展,请使用
    console.log()

您不能使用
chrome.browserAction.onClicked
侦听器如果您将弹出页面附加到浏览器操作按钮,它将不会启动

  • 删除弹出窗口,只保留按钮
  • 将所有内容移到背景页
  • tab.id
    替换为
    null
  • 删除
    createFile()在开始时调用,因为在这种情况下它不会做任何事情(内容脚本尚未准备好侦听)
  • 不要将警报用于调试扩展,请使用
    console.log()

是,这是当前所选选项卡的id是,这是当前所选选项卡的id我已将代码编辑为实际代码,这对我来说正常,请chki已将代码编辑为实际代码,这对我来说正常,请chk