backgroundjs和contentScriptjs之间的错误通信

时间:2014-11-16 00:09:08

标签: javascript google-chrome-extension

我在下面的代码中遇到了这个错误:

Could not establish connection. Receiving end does not exist. 

我的background.js

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
    if(chrome.runtime.lastError) {
      console.error(chrome.runtime.lastError.message);
      return;
    }
    console.log(response.farewell);
    console.log('ytr');
  });
});

和我的contentScript.js

chrome.extension.onMessage.addListener(function (request, sender, sendResponse) {
  alert(request.greeting);
});

我的manifest.json

的一部分
  "background": {
    "scripts": ["background.js"]
  },
  "permissions": [
    "https://*/*",
    "http://*/*",
    "activeTab",
    "storage",
    "tabs"
  ],
  "content_scripts": [
    {
      "matches": ["https://*/*", "http://*/*"],
      "js": ["jquery.js","contentScript.js"],
      "css": ["style.css"]
    }
  ]

我想知道我的错误是什么。

1 个答案:

答案 0 :(得分:0)

当devtools窗口处于活动状态时,您可能正在运行此代码。我可以通过从后台页面控制台运行该代码来重现该问题,但不能在常规选项卡处于活动状态时运行。尝试运行console.log(“URL =”+ tabs [0] .url)以查看活动选项卡是否是您真正期望的选项卡。