chrome.browserAction如何工作?

时间:2014-12-30 18:44:30

标签: google-chrome google-chrome-extension

我正在尝试开发我的第一个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

有什么想法吗?

2 个答案:

答案 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。