chrome.contextMenu

дата обновления: 2026-09-25 robots: noindex

Описание

Используйте API chrome.contextMenus для добавления элементов в контекстное меню Google Chrome. Вы можете выбрать, к каким типам объектов будут применяться ваши дополнения контекстного меню, например, к изображениям, гиперссылкам и страницам.

Разрешения

contextMenus

Использование

Пункты контекстного меню могут отображаться в любом документе (или фрейме внутри документа), даже в тех, которые имеют URL-адреса file:// или chrome://. Чтобы контролировать, в каких документах могут отображаться ваши пункты, укажите поле documentUrlPatterns при вызове методов create() или update() .

Вы можете создать столько пунктов контекстного меню, сколько вам нужно, но если одновременно отображается более одного пункта из вашего расширения, Google Chrome автоматически свернет их в одно родительское меню.

Манифест

Для использования API необходимо указать разрешение "contextMenus" в манифесте вашего расширения. Кроме того, следует указать иконку размером 16x16 пикселей для отображения рядом с пунктом меню. Например:

{
  "name": "My extension",
  ...
  "permissions": [
    "contextMenus"
  ],
  "icons": {
    "16": "icon-bitty.png",
    "48": "icon-small.png",
    "128": "icon-large.png"
  },
  ...
}

Примеры

Чтобы опробовать этот API, установите пример contextMenus API из репозитория chrome-extension-samples .

Типы

ContextType

Chrome 44+

The different contexts a menu can appear in. Specifying 'all' is equivalent to the combination of all other contexts except for 'launcher' and 'tab'. The 'launcher' context is only supported by apps and is used to add menu items to the context menu that appears when clicking the app icon in the launcher/taskbar/dock/etc. Different platforms might put limitations on what is actually supported in a launcher context menu.

Перечисление

"все"

"страница"

"рамка"

«выбор»

"связь"

"редактируемый"

"изображение"

"видео"

"аудио"

"пусковая установка"

"действие"
Применяется к контекстному меню действия расширения (его значку на панели инструментов).

"вкладка"
Применяется к контекстному меню вкладки на панели вкладок.

CreateProperties

Chrome 123+

Свойства нового пункта контекстного меню.

Характеристики

  • проверено

    логический необязательный

    Начальное состояние флажка или переключателя: true — выбран, false — не выбран. В данной группе одновременно можно выбрать только один переключатель.

  • контексты

    [ ContextType , ... ContextType []] optional

    Список контекстов, в которых будет отображаться этот пункт меню. По умолчанию — ['page'] .

  • documentUrlPatterns

    строка[] необязательный

    Ограничивает применение элемента только к документам или фреймам, URL-адрес которых соответствует одному из заданных шаблонов. Подробную информацию о форматах шаблонов см. в разделе «Шаблоны соответствия» .

  • включено

    логический необязательный

    Включен или выключен этот пункт контекстного меню. По умолчанию — true .

  • идентификатор

    строка необязательный

    Уникальный идентификатор, присваиваемый этому элементу. Обязателен для страниц событий. Не может совпадать с другим идентификатором этого расширения.

  • parentId

    строка | число (необязательно)

    Идентификатор родительского пункта меню; это делает данный пункт дочерним по отношению к ранее добавленному пункту.

  • targetUrlPatterns

    строка[] необязательный

    Аналогично documentUrlPatterns , фильтрация осуществляется на основе атрибута src тегов img , audio и video , а также атрибута href тегов a .

  • заголовок

    строка необязательный

    Текст, который нужно отобразить в элементе; это обязательное поле , если type не является separator . Если контекст — selection , используйте %s внутри строки, чтобы отобразить выделенный текст. Например, если значение этого параметра — «Перевести '%s' на свинскую латынь», и пользователь выделяет слово «cool», пункт контекстного меню для этого выделения будет «Перевести 'cool' на свинскую латынь».

  • тип

    ItemType ( необязательный параметр)

    Тип пункта меню. По умолчанию — normal .

  • видимый

    логический необязательный

    Виден ли данный пункт в меню.

  • при клике

    void optional

    Функция, которая вызывается при щелчке по пункту меню. Она недоступна внутри сервис-воркера; вместо этого следует зарегистрировать слушатель для contextMenus.onClicked .

    Функция onclick выглядит следующим образом:

    (info: OnClickData, tab: Tab) => {...}

    • информация

      Информация о клике и контексте, в котором он произошел.

    • вкладка

      Подробная информация о вкладке, где произошел клик. Этот параметр отсутствует для приложений, работающих на данной платформе.

ItemType

Chrome 44+

Тип пункта меню.

Перечисление

"нормальный"

"флажок"

"радио"

«разделитель»

OnClickData

Информация, отправляемая при нажатии на пункт контекстного меню.

Характеристики

  • проверено

    логический необязательный

    Флаг, указывающий состояние флажка или переключателя после нажатия на него.

  • редактируемый

    логический

    Флаг, указывающий, является ли элемент редактируемым (текстовое поле, текстовая область и т. д.).

  • frameId

    число необязательно

    Chrome 51+

    Идентификатор элемента, в котором было нажато контекстное меню, если он находился во фрейме.

  • frameUrl

    строка необязательный

    URL-адрес элемента, в котором было нажато контекстное меню, если он находился во фрейме.

  • linkUrl

    строка необязательный

    Если элемент является ссылкой, указывается URL-адрес, на который она указывает.

  • медиаТип

    строка необязательный

    Если для одного из этих типов элементов было активировано контекстное меню, выберите один из вариантов: 'image', 'video' или 'audio'.

  • menuItemId

    строка | число

    Идентификатор пункта меню, на который был сделан щелчок.

  • pageUrl

    строка необязательный

    URL страницы, на которой был нажат пункт меню. Это свойство не устанавливается, если щелчок произошел в контексте, где нет текущей страницы, например, в контекстном меню панели запуска.

  • parentMenuItemId

    строка | число (необязательно)

    Идентификатор родительского элемента (если таковой имеется), по которому был выполнен щелчок.

  • выбранный текст

    строка необязательный

    Текст для контекстного выделения, если таковой имеется.

  • srcUrl

    строка необязательный

    Будет присутствовать для элементов с URL-адресом 'src'.

  • был проверен

    логический необязательный

    Флаг, указывающий на состояние флажка или переключателя до момента его нажатия.

Характеристики

ACTION_MENU_TOP_LEVEL_LIMIT

Максимальное количество элементов расширения верхнего уровня, которые можно добавить в контекстное меню действия расширения. Любые элементы, превышающие этот лимит, будут проигнорированы.

Ценить

6

Методы

create()

chrome.contextMenus.create(
  createProperties: CreateProperties,
  callback?: function,
)
: number | string

Создает новый пункт контекстного меню. Если во время создания возникает ошибка, она может быть не обнаружена до тех пор, пока не сработает функция обратного вызова создания; подробности будут указаны в runtime.lastError .

Параметры

  • создатьСвойства
  • перезвонить

    функция необязательна

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • число | строка

    Идентификатор вновь созданного элемента.

remove()

Обещать
chrome.contextMenus.remove(
  menuItemId: string | number,
  callback?: function,
)
: Promise<void>

Удаляет пункт контекстного меню.

Параметры

  • menuItemId

    строка | число

    Идентификатор пункта контекстного меню, который нужно удалить.

  • перезвонить

    функция необязательна

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Обещание<пустота>

    Chrome 123+

    Проблема решается при удалении контекстного меню.

    Поддержка промисов доступна только для Manifest V3 и более поздних версий; для других платформ необходимо использовать колбэки.

removeAll()

Обещать
chrome.contextMenus.removeAll(
  callback?: function,
)
: Promise<void>

Удаляет все пункты контекстного меню, добавленные этим расширением.

Параметры

  • перезвонить

    функция необязательна

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Обещание<пустота>

    Chrome 123+

    Проблема решается после завершения удаления.

    Поддержка промисов доступна только для Manifest V3 и более поздних версий; для других платформ необходимо использовать колбэки.

update()

Обещать
chrome.contextMenus.update(
  id: string | number,
  updateProperties: object,
  callback?: function,
)
: Promise<void>

Обновляет ранее созданный пункт контекстного меню.

Параметры

  • идентификатор

    строка | число

    Идентификатор элемента, который необходимо обновить.

  • обновитьСвойства

    объект

    Свойства для обновления. Принимает те же значения, что и функция contextMenus.create .

    • проверено

      логический необязательный

    • контексты

      [ ContextType , ... ContextType []] optional

    • documentUrlPatterns

      строка[] необязательный

    • включено

      логический необязательный

    • parentId

      строка | число (необязательно)

      Идентификатор элемента, который должен стать родительским элементом для данного элемента. Примечание: Вы не можете установить элемент в качестве дочернего элемента для своего собственного потомка.

    • targetUrlPatterns

      строка[] необязательный

    • заголовок

      строка необязательный

    • тип

      ItemType ( необязательный параметр)

    • видимый

      логический необязательный

      Chrome 62+

      Виден ли данный пункт в меню.

    • при клике

      void optional

      Функция onclick выглядит следующим образом:

      (info: OnClickData, tab: Tab) => {...}

      • информация
        Chrome 44+
      • вкладка
        Chrome 44+

        Подробная информация о вкладке, где произошел клик. Этот параметр отсутствует для приложений, работающих на данной платформе.

  • перезвонить

    функция необязательна

    Параметр callback выглядит следующим образом:

    () => void

Возвраты

  • Обещание<пустота>

    Chrome 123+

    Проблема решается после обновления контекстного меню.

    Поддержка промисов доступна только для Manifest V3 и более поздних версий; для других платформ необходимо использовать колбэки.

События

onClicked

chrome.contextMenus.onClicked.addListener(
  callback: function,
)

Событие срабатывает при нажатии на пункт контекстного меню.

Параметры