繁体   English   中英

chrome-extension中无法从executeScript发送数据

[英]Can't send data out of executeScript in chrome-extension

我正在开发一个chrome扩展程序,它可以提取当前选项卡的所有meta标签。 我使用ReactJs作为主要开发环境,并将与chrome相关的代码放置在其componentWillMount()方法中。

componentWillMount() {
const code =
    "let metas = document.getElementsByTagName('meta');" +
    "let newMetas = []" +
    "for (let meta of metas) {" +
    " newMetas.push({name: meta.name, content: meta.content});" +
    "}" +
    "newMetas;";

chrome.tabs.executeScript(null, {
  code: code
}, function (results) {
  console.log(results);  // <=== Here I get 'null' value
  if (!results) {       
    return;
  }      
})}

这是我的manifest.json文件

    {
  "manifest_version": 2,
  "name": "Northwind",
  "description": "Just a simple all with all northwind employees",
  "version": "1.0",
  "browser_action": {
    "default_icon": "./img/ic-logo.png",
    "default_popup": "./index.html"
  },
  "permissions": [
    "http://www.amazon.com/",
    "tabs"
  ],
  "web_accessible_resources": ["script.js"],
  "content_scripts": [{
      "matches": ["http://www.amazon.com/*"],
      "js": ["app.js"]
    }
  ] 
}

app.js是由react生成的构建文件。

我一直在阅读和搜索它,但没有得到任何有关它为什么不起作用的线索。

另一个问题是,当我在脚本中放入console.log('done')时,它也没有显示出来,所以我猜配置也有问题。

非常感谢你的帮助。

使用chrome.tabs.executeScript您必须在清单的权限字段中指定主机。
这称为程序注入

要将代码插入页面,扩展程序必须具有页面的跨域权限。 它还必须能够使用chrome.tabs模块。 您可以使用清单文件的“权限”字段获得两种权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM