将onClicked处理程序添加到没有弹出窗口的浏览器操作中

Add onClicked handler to browser action without popup?

本文关键字:窗口 浏览器 操作 处理 onClicked 程序 添加      更新时间:2023-09-26

我开始使用Chrome扩展。

我的扩展有2 content_scripts在页面加载上执行。我想从这些JS文件中添加一个onClicked处理程序为我的浏览器操作。

基本上我想做的是chrome.browserAction.onClicked.addListener,但我读过一个类似的问题,这只适用于一个弹出式html文件内。我不使用弹出文件,因为我目前不需要一个,我需要我的JS在全局范围内运行(因为它没有default_popup)。

我的manifest.json:

{
  "manifest_version": 2,
  "name": "Foo",
  "description": "Foo description.",
  "version": "0.0.0.1",
  "permissions":[
    "tabs", "http://*/*", "https://*/*"
  ],
  "browser_action": {
    "default_icon": "icon.png"
  },
  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "js": ["jquery1.9.1.min.js", "foo.js"]
    }
  ]
}

对不起,但我的谷歌技能找不到如何做到这一点。是否有办法将onClicked处理程序附加到我的浏览器操作,或者我需要一个html弹出?

决定把我冗长的评论移到一个答案上。

如果你定义了一个弹出窗口,那么onClicked事件永远不会被触发,但是没有它也能正常工作。只需将处理程序弹出到后台页面中,它就可以正常工作了。请注意,chrome.browserAction以及几乎所有其他chrome.* API都不能从content script访问,因此需要使用backgroundevent页面。