Tworzenie menu kontekstowego

Pojawi się menu kontekstowe dla kliknięcia alternatywnego (często nazywanego kliknięciem prawym przyciskiem myszy). Z tego artykułu dowiesz się, jak zaimplementować menu kontekstowe. Pełną listę powiązanych elementów interfejsów API znajdziesz w browser.contextMenu.

Aby utworzyć menu kontekstowe, najpierw dodaj "contextMenus" permission do pliku manifest.json.

manifest.json:

  "permissions": [
    "contextMenus"
  ],

Opcjonalnie użyj klawisza "icons", jeśli chcesz wyświetlić ikonę obok elementu menu. W tym przykładzie element menu rozszerzenia „Globalne wyszukiwanie w Google” używa ikony o wymiarach 16 x 16 pikseli.

Pozycja menu kontekstowego z ikoną o wymiarach 16 x 16.
Element menu kontekstowego z ikoną o wymiarach 16 x 16.

Pozostała część tego przykładu pochodzi z przykładowego menu kontekstowego globalnego wyszukiwania w Google, które zawiera wiele opcji menu kontekstowego. Jeśli rozszerzenie zawiera więcej niż jedno menu kontekstowe, Chrome automatycznie zwija je w jedno menu nadrzędne, jak pokazano tutaj:

Zagnieżdżone menu kontekstowe.
Ilustracja 4. Menu kontekstowe i zagnieżdżone menu podrzędne.

W przykładzie pokazano to przez wywołanie funkcji contextMenus.create() w skrypcie service worker rozszerzenia. Elementy podmenu są importowane z pliku locales.js. Następnie runtime.onInstalled iteruje po nich.

service-worker.js:

const tldLocales = {
  'com.au': 'Australia',
  'com.br': 'Brazil',
  ...
}

browser.runtime.onInstalled.addListener(async () => {
  for (let [tld, locale] of Object.entries(tldLocales)) {
    browser.contextMenus.create({
      id: tld,
      title: locale,
      type: 'normal',
      contexts: ['selection'],
    });
  }
});