在chrome.tabs.executeScript之后,内容脚本无法处理来自后台的消息

时间:2016-11-09 07:39:58

标签: javascript google-chrome-extension

chrome:54.0.2840.87

这是我的第一个Chrome扩展程序,我是javascript的新手。

我的manifest.json:

"background": {
    "persistent": true,
    "scripts": ["lib/jquery/jquery-3.1.1.min.js", "background.js"]
},
"content_scripts": [{
    "matches": ["<all_urls>"],
    "js": ["content-scriptA.js",
           "lib/jquery/jquery-3.1.1.min.js"],
    "css": ["res/css/ms-0.0.1.css"]
}],
"content_security_policy": "script-src 'self' https://connect.facebook.net; object-src 'self'",
"permissions": [
    "activeTab",
    "tabs",
    "storage",
    "identity",
    "<all_urls>"
],

background.js:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if (message_from_A) {
    chrome.tabs.query({currentWindow: true, active: false}, function(tabs) {
      chrome.tabs.executeScript(null, {file: "content-scriptB.js"});
    });
  }
  if (message_from_B) {
    chrome.tabs.query({currentWindow: true, active: false}, function(tabs) {
      chrome.tabs.sendMessage(tabs[0].id, {to : "A", do: "..."});
    });
});

  chrome.runtime.onMessage.addListener(function(request, sender, response) {
      console.log("...");
  });

content-scriptA.js,content-scriptB.js的处理程序。

content-scriptA用于呈现A.html,content-scriptB用于在使用我的扩展名时在同一iframe中呈现B.html。

我想要做的是当用户想要从B.html返回A.html时,使用content-scriptA.js渲染A.html。

当我执行content-scriptB.js时,我认为A.js和B.js都在进行,但是当我从后台发送消息时,没有人回答。

我尝试使用端口,重新加载相同的脚本等等,但仍然找不到TT的方式

感谢您的帮助,并阅读我的问题。

0 个答案:

没有答案