Нужна помощь в создании многоуровневого контекстного меню для дополнения Firefox - PullRequest
0 голосов
/ 17 февраля 2019

Каждый раз, когда я нажимаю на идентификатор США, он всегда приводит меня на страницу 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 Ответ

0 голосов
/ 17 февраля 2019

Вы добавили двух слушателей к любому элементу contextMenu, по которому можно щелкнуть.Итак, у вас есть две опции:

Solution # 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

Solution # 2

Добавьте один прослушиватель и проверьте, какой элемент contextMenu был выбран, используя свойство 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=" })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...