Javascript chrome扩展消息未传递响应

Javascript chrome扩展消息未传递响应,javascript,google-chrome-extension,message-passing,Javascript,Google Chrome Extension,Message Passing,我正在开发一个非常简单的浏览器扩展,但无法将消息传递到工作中: 我可以发送消息,但从未发送回复 我的代码: 它主要只是browserActions教程、contentscripts教程(清单)和消息传递api定义的副本 manifest.json: { "manifest_version":2, "name": "FUN SCRIPT", "version": "1", "description": "THIS IS SOME FUN SCRIPT", "browser_

我正在开发一个非常简单的浏览器扩展,但无法将消息传递到工作中: 我可以发送消息,但从未发送回复

我的代码: 它主要只是browserActions教程、contentscripts教程(清单)和消息传递api定义的副本

manifest.json:

{
    "manifest_version":2,
  "name": "FUN SCRIPT",
  "version": "1",
  "description": "THIS IS SOME FUN SCRIPT",
  "browser_action": {
    "name": "Fun",
    "icons": ["icon.png"],
    "default_icon": "icon.png",
     "default_popup": "popup.html"
  },
  "content_scripts": [ {
    "js": [ "jquery.js", "background.js" ],
    "matches": [ "http://*/*", "https://*/*"]
  }],
}
background.js

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    console.log(sender.tab ?
                "from a content script:" + sender.tab.url :
                "from the extension");
    if (request.greeting == "hello")
      sendResponse({farewell: "goodbye"});
  });
popup.js

document.addEventListener('DOMContentLoaded', function () {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
        console.log(response.farewell);
      });
    });
});
popup.html

<!doctype html>
<html>
  <head>
    <title>Getting Started Extension's Popup</title>
    <style>
      body {
        min-width: 357px;
        overflow-x: hidden;
      }

      img {
        margin: 5px;
        border: 2px solid black;
        vertical-align: middle;
        width: 75px;
        height: 75px;
      }
    </style>
    <script src="popup.js"></script>
  </head>
  <body>
  </body>
</html>

入门扩展的弹出窗口
身体{
最小宽度:357px;
溢出x:隐藏;
}
img{
保证金:5px;
边框:2件纯黑;
垂直对齐:中间对齐;
宽度:75px;
高度:75px;
}

由于每次加载弹出窗口时都会发送从弹出窗口到内容脚本的消息,因此请确保重新加载页面以确保加载内容脚本。否则,最终可能会出现以下错误:

Could not establish connection. Receiving end does not exist.

这就是说,我尝试了你提供的东西,它就这样工作了。由于您的输出在popup.js中,因此响应在弹出窗口的控制台输出中。您可以通过右键单击浏览器操作图标并选择“检查弹出窗口”来查看它。

我认为这不是真的,因为消息已发送到内容脚本(我从内容脚本获取console.log),但响应不起作用。另外:当我单击browserAction按钮时,会触发该操作。这是在加载contentscript之后!好的,我试了进一步,它确实与你提供的工作。我加载了扩展,检查了弹出窗口,发现
接收端不存在
错误。我重新加载了一个页面来加载内容脚本,然后重新检查了弹出窗口,看到了预期的控制台输出。非常有趣。。我认为它也应该起作用。但是我看不到响应的控制台输出..也许你找的地方不对?由于您的输出在
popup.js
中,因此响应在弹出窗口的控制台输出中。您可以通过右键单击浏览器操作图标并选择“检查弹出窗口”来查看它。嘿,这就是问题所在-,-您想将此作为答案写下来,以便我可以投赞成票吗?