我正在创建Chrome扩展程序,但我的browser action无效。
My Manifest.jason
{
"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);
我收到的错误是
未捕获的TypeError:无法读取属性&#39; onClicked&#39;未定义的
答案 0 :(得分:8)
命名脚本background.js
并不会神奇地将其作为后台脚本!
它仍然在您的清单中定义为内容脚本,内容脚本具有severely restricted access to Chrome API。这会导致您遇到的错误。
点击按钮等事件的听众应该从一个中心位置完成;这是background page的目的(更好的是,event page)。您应该声明您的脚本,并在需要时向内容脚本广播message。
总而言之,请仔细阅读Architecture Overview,它会对您有所帮助。