我正在尝试开发我的第一个Chrome扩展程序并遇到问题。首先,我使用以下样板作为页面操作:
http://extensionizr.com/!#{"modules":["browser-mode","with-persistent-bg","no-bg","with-custom-options","no-override","inject-css","inject-js","jquerymin"],"boolean_perms":["contentSettings","cookies","notifications"],"match_ptrns":[]}
在inject.js
中,它会从远程服务器下载一个网址列表,检查当前网址,如果匹配则应该执行某些操作。我打算使用通知,但我猜通知来自当前页面而不是扩展名。因此,如果您开始通知,它会说“您是否要为亚马逊启用通知”。然后我继续改变图标。我宁愿最终做两件事。但是,当我尝试使用以下内容设置文本时:
chrome.browserAction.setIcon({path: 'icons/icon128-x.png'});
然而,这是我在控制台中得到的。
Uncaught TypeError: Cannot read property 'setIcon' of undefined
有什么想法吗?
答案 0 :(得分:1)
扩展程序清单在chrome.browserAction API可用之前需要"browser_action"
部分:
在扩展程序清单中注册您的浏览器操作,如下所示:
{ "name": "My extension", ... "browser_action": { "default_icon": { // optional "19": "images/icon19.png", // optional "38": "images/icon38.png" // optional }, "default_title": "Google Mail", // optional; shown in tooltip "default_popup": "popup.html" // optional }, ... }
(来自https://developer.chrome.com/extensions/browserAction#manifest。)
答案 1 :(得分:0)
根据chrome扩展文档Content Scripts
,您无法在content.js中访问chrome.browserAction。此外,内容脚本可以直接访问以下chrome API:
i18n storage runtime: connect getManifest getURL id onConnect onMessage sendMessage
内容脚本无法直接访问其他API。