Search code examples
google-chromegoogle-chrome-extensioncontextmenu

Add contextmenu items to a Chrome extension's browser action button


A G Chrome extension can have a 'browser action'. Usually the ext developer displays the options when you click on it, meaning every action requires 2 clicks, even the default 99%-of-the-time action. Chrome itself adds a context menu with a few options: disable ext, uninstall ext, go to ext homepage etc.

Can I as ext developer add items to that context menu, so I can keep my 1-click-action under the normal/left/primary mouse click?

I know of chrome.contextMenus but that's only for context menus in the page (see property 'contexts').

I can't find it in the Chrome Extension dev guide, but you know more than I.


Solution

  • It is now possible, AdBlock chrome extensions has it. Below is working example of "context menu in browser action".

    manifest.json:

    {
        "name": "Custom context menu in browser action",
        "version": "1",
        "manifest_version": 2,
        "background": {
          "scripts": ["background.js"]
        },
        "browser_action": {
          "default_title": "Some tooltip",
          "default_popup": "popup.html"
        },
        "permissions": [
          "contextMenus"
        ],
        "icons": {
          "16": "icon16.png"
        }
    }
    

    background.js:

    chrome.contextMenus.removeAll();
    chrome.contextMenus.create({
          title: "first",
          contexts: ["browser_action"],
          onclick: function() {
            alert('first');
          }
    });
    

    Note that if you use an Event page, you cannot use the onclick attribute; you'll need to add a listener to chrome.contextMenus.onClicked instead.