将下拉菜单添加到chrome扩展程序图标

时间:2014-06-18 22:14:16

标签: javascript google-chrome google-chrome-extension

我知道我可以将 popup.html 与点击扩展按钮相关联。但是,我希望它是一个菜单,就像点击Chrome自己的“自定义和控制谷歌浏览器”按钮(位于扩展图标右侧)后弹出的菜单。我试图谷歌它,但似乎没有人在谈论这个。我是否遗漏了有关Chrome扩展程序开发的任何常识

2 个答案:

答案 0 :(得分:3)

你不能。

您可以通过chrome.browserAction.onClicked注册点击,但不显示用户界面,也无需在弹出窗口中打开HTML页面。您可以将其设置为看起来像菜单,但它仍然不像本机下拉菜单。

请注意,您可以右键单击扩展按钮,但是您获得的菜单是固定的。很久以前我提交了一个feature request,但它从未起步。现在有一个contextMenus上下文"browser_action"可以实现此目的。

答案 1 :(得分:0)

一个实际的例子,因为文档实际上并不清楚:

manifest.js

{
  "name": "Foo menu",
  "description": "Demonstrating context menus on browser actions",
  "manifest_version": 2,
  "version": "1.0",
  "background": {
    "persistent": false,
    "scripts": ["background.js"]
  },
  "browser_action": {
    "default_title": "Click me"
  },
  "icons": {
    "16": "icon.png",
  },
  "permissions": ["contextMenus"]
}

background.js

chrome.contextMenus.removeAll();
chrome.contextMenus.create({
  id: "FOO_ACTION",
  title: "Foo",
  contexts: ["browser_action"],
});
chrome.contextMenus.onClicked.addListener((info, tab) => {
  if (info.menuItemId === "FOO_ACTION") {
    // Execute foo using tab id
    foo(tab.id);
  }
});

const foo = (tabId) => { console.log(`Foo called on tab with id ${tabId}`) };