需要帮助为 firefox 附加组件创建多级上下文菜单

Need assistance with creating multilevel context menu for firefox Add-on

每当我点击美国 ID 时,它总是会带我到 CA ID 页面。

请帮我修改一下后台代码

谢谢。

manifest.json

{
    "manifest_version": 2,
    "name": "Amazon",
    "description": "Search on Amazon",
    "version": "1.0",
    "icons": {
        "48": "logo_48.jpg"
            },
    "permissions":["contextMenus"],
    "background": {
        "scripts": ["background.js"]
    }
}

background.js

browser.contextMenus.create({
    id: "US",
    title: "A US",
    contexts: ["selection"]
});


browser.contextMenus.create({
    id: "CA",
    title: "A CA",
    contexts: ["selection"]
});


//add action listener to the context menu
browser.contextMenus.onClicked.addListener(contextMenuAction);

function contextMenuAction(info, tab) {



    const url = "https://www.amazon.com/s?k=";

    browser.tabs.create({url: url});
        }


browser.contextMenus.onClicked.addListener(contextMenuAction);

function contextMenuAction(info, tab) {



    const url = "https://www.amazon.ca/s?k=";

    browser.tabs.create({url: url});
        }

您向任何可能被单击的上下文菜单项添加了两个侦听器。所以,你有两个选择:

解决方案 #1

将函数传递给每个项目的 onclick 选项

browser.contextMenus.create({
  id: "US",
  title: "A US",
  contexts: ["selection"],
  onclick: function () {
    browser.tabs.create({ url: "https://www.amazon.com/s?k=" })
  }
})

// do the same for the other contextMenu item created

解决方案 #2

添加一个侦听器并使用 menuItemId 检查选择了哪个上下文菜单项 属性。

function contextMenuAction(info, tab) {
  if (info.menuItemId === "US") {
    browser.tabs.create({ url: "https://www.amazon.com/s?k=" })
  }

  if (info.menuItemId === "CA") {
    browser.tabs.create({ url: "https://www.amazon.ca/s?k=" })
  }