[英]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.