在Google Chrome扩展程序中添加子contextMenus

时间:2017-11-10 22:15:22

标签: google-chrome

我目前可以在Google Chrome扩展程序中创建一个contextMenu(右键菜单),如下所示:

chrome.contextMenus.create({
  title: "The name to click",
  contexts:["selection"],
  onclick: theFunctionToRun
});

但是,我希望能够添加子菜单的contextMenu。我正在实现10个可以通过右键单击菜单调用的工具,但是希望有2个菜单,每个菜单中有5个工具,基于它们的分类。

我无法在线或在相关文档中找到任何信息。我很惊讶其他人也不想要这个功能所以也许我只是在寻找错误的东西。

是否可以创建子菜单的contextMenu?如果是这样,我该怎么做?

3 个答案:

答案 0 :(得分:3)

我明白了。我需要在父菜单中指定一个id,然后在其他菜单中引用父ID,如下所示:

target:
        export JAVA_HOME=$(JAVA_HOME); \
        export DATASTORE_EMULATOR_HOST=localhost:8432 \
        export DATASTORE_PROJECT_ID=my-project-id \
        go run src/main.go

答案 1 :(得分:2)

基本上,以上答案的组合对我有用。这是我的示例(有两种创建菜单的方法-在var中声明或在chrome.contextMenus.create中直接使用):

var contextMenuItem = {
    "id": "addRecipe",
    "title": "Add Recipe",
    "contexts": ["selection"]
};

chrome.contextMenus.create(contextMenuItem);

chrome.contextMenus.create({
    title: "Add new recipe name",
    parentId: "addRecipe",
    id: "name",
    contexts:["selection"]
});

chrome.contextMenus.create({
    title: "Add shopping list",
    parentId: "addRecipe",
    id: "list",
    contexts:["selection"]
});

chrome.contextMenus.create({
    title: "Add ingredients",
    parentId: "addRecipe",
    id: "ingredients",
    contexts:["selection"]
});

chrome.contextMenus.create({
    title: "Add cooking steps",
    parentId: "addRecipe",
    id: "steps",
    contexts:["selection"]
});

答案 2 :(得分:0)

可能有点简单。首先,我将拥有并说这不是我的原始代码,但子菜单位是。 我基于它的代码来自: https://www.youtube.com/watch?v=DH7QVll30XQ和他的Github回购 https://github.com/gopinav/Chrome-Extensions。这里'我如何更改事件页面只是添加了另一个上下文菜单项。 父菜单标题是Manifest上的名称,我只是为了确定而改变了。我希望这对某些人有用。

    var priceItem = {
    "id": "saveAsPrice",
    "title": "Save as Price",
    "contexts": ["selection"]
};

var nameItem = {
    "id": "saveAsName",
    "title": "Save as Name",
    "contexts": ["selection"]
};


chrome.contextMenus.create(priceItem);
chrome.contextMenus.create(nameItem);

Chrome Extension Context submenu