Web 扩展的子菜单

Submenu for Web extensions

要有 context menu in a web extension 我们可以使用

browser.contextMenus.create({
  id: "clickme",
  title: "Click me!",
  contexts: ["all"]
});

很遗憾,我找不到子菜单的方法,有吗?

将子菜单与菜单使用参数

连接起来

parentId

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/contextMenus/create#Parameters

在示例中,您可以看到通过 parentId: MENU_ENTRY.DIALOG_OPTIONS 连接到带有 id: MENU_ENTRY.DIALOG_OPTIONS 的父菜单的子菜单。

主菜单没有parentId

const MENU_ENTRY = {
    DIALOG_OPTIONS: 'DIALOG_OPTIONS',
    DIALOG_OPTIONS_DEFAULT: 'DO_DEFAULT',
    DIALOG_OPTIONS_DETACH: 'DO_DETACH',
}

browser.contextMenus.create({
    id: MENU_ENTRY.DIALOG_OPTIONS,
    title: browser.i18n.getMessage("contextMenuItemDialogOptions"),
    contexts: ["all"]
}, onCreated);

browser.contextMenus.create({
    id: MENU_ENTRY.DIALOG_OPTIONS_DETACH,
    parentId: MENU_ENTRY.DIALOG_OPTIONS,
    type: "radio",
    title: browser.i18n.getMessage("contextMenuItemDialogOptionsDetach"),
    contexts: ["all"],
    checked: true
}, onCreated);

browser.contextMenus.create({
    id: MENU_ENTRY.DIALOG_OPTIONS_DEFAULT,
    parentId: MENU_ENTRY.DIALOG_OPTIONS,
    type: "radio",
    title: browser.i18n.getMessage("contextMenuItemDialogOptionsDefault"),
    contexts: ["all"],
    checked: false
}, onCreated);

function onCreated(n) {
    if (browser.runtime.lastError) {
        console.log(`Error: ${browser.runtime.lastError}`);
    } else {
        console.log("Menu Item created successfully");
    }
}