基本上我正在尝试按照Google文档进行一些Chrome扩展。我想在每次单击扩展按钮时注入脚本。 到目前为止,这是我的表现:
{
"name": "Example",
"manifest_version": 2,
"version": "1.0",
"permissions": [
"tabs"
],
"description": "My Chrome extension.",
"browser_action": {
"default_icon": "icon.png"
},
"background": {
"scripts": ["background.js"]
}
}
这是我的背景.js:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {code: "content_script.js"});
});
问题是即使尝试使用如此简单的alert("aaa");
答案 0 :(得分:13)
要在页面上执行内容脚本,您必须在清单文件中请求正确的主机权限。
由于您希望在单击浏览器操作按钮时插入内容脚本,因此只需请求activeTab
permission即可。此外,您可以放弃tabs
权限,将permission warnings的数量减少为零!
{
"name": "Example",
"manifest_version": 2,
"version": "1.0",
"permissions": [
"activeTab"
],
"browser_action": {
"default_icon": "icon.png"
},
"background": {
"scripts": ["background.js"]
}
}
(activeTab
权限为introduced in Chrome 26。如果您需要支持Chrome 25及更早版本,请将*://*/*
或<all_urls>
权限添加到清单文件中。< / p>
注意:如果您向chrome.tabs.executeScript
添加回调,则会在chrome.runtime.lastError.message
中收到有用的错误消息:
无法访问网址“http .....”的内容。扩展程序清单必须请求访问此主机的权限。
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {
file: "content_script.js"
}, function() {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError.message);
}
});
});
答案 1 :(得分:6)
除了Rob的修复,你应该使用{file: "content_script.js"}