我正在创建一个chrome扩展,但我的browser action不工作。
我的清单,杰森
{
"name": "TypoSaurus",
"version": "0",
"description": "TypoSaurus extension",
"background": {
"page": "background.html"
},
"manifest_version": 2,
"browser_action": {
"name": "TypoSaurus",
"icons": ["icon.png"],
"default_icon": "icon.png"
},
"content_scripts": [{
"js": ["jquery-2.0.2.min.js", "background.js"],
"css": ["customStyles.css"],
"matches": ["http://*/*", "https://*/*"]
}],
"permissions": ["<all_urls>"]
}
字符串
我的background.js
function typo (tab) {
alert('test');
}
chrome.browserAction.onClicked.addListener(typo);
型
我收到的错误是
未捕获的类型错误:无法读取未定义的属性“onClicked”
2条答案
按热度按时间a1o7rhls1#
将脚本命名为
background.js
并不会神奇地使其成为后台脚本!它仍然被定义为清单中的内容脚本,并且内容脚本具有severely restricted access to Chrome API。这会导致您遇到的错误。
单击按钮等事件的侦听器应该从一个中心位置完成;这就是background page(更好的是event page)的目的。您应该这样声明您的脚本,并在需要时向内容脚本广播message。
总之,请仔细阅读架构概述,它将对您有很大帮助。
r6l8ljro2#
您可以在
background.html
文件中添加脚本标记,如下所示。字符串
通过这种方式,您可以使用后台脚本。
当前代码的问题
chrome.browserAction.onClicked
只能在后台脚本中工作。(内容脚本无权访问此内容)
background.js
文件作为内容脚本工作,因为你已经提到了在content_scripts
数组中。