chrome.contextMenus

refresh date: 2026-09-25 robots: noindex

Описание

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

Разрешения

contextMenus

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

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

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

Манифест

Чтобы использовать API, необходимо объявить разрешение contextMenus в манифесте расширения. Также необходимо указать значок размером 16 x 16 пикселей, который будет показываться рядом с пунктом меню. Пример:

{
  "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 и более поздних версий;

Различные контексты, в которых может появляться меню. Значение all эквивалентно комбинации всех остальных контекстов, кроме launcher и tab. Контекст launcher поддерживается только приложениями и используется для добавления пунктов в контекстное меню, которое появляется при нажатии на значок приложения на панели запуска, панели задач, панели Dock и т. д. На разных платформах могут действовать ограничения на то, что поддерживается в контекстном меню панели запуска.

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

"all"

"page"

"frame"

"selection"

"link"

"editable"

"image"

"video"

"audio"

"launcher"

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

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

CreateProperties

Chrome 123 и более поздних версий

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

Свойства

  • выбрано

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

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

  • контексты

    [ContextType, ...ContextType[]] необязательный

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

  • documentUrlPatterns

    string[] необязательно

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

  • включено

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

    Указывает, включен ли этот пункт контекстного меню. Значение по умолчанию – true.

  • id

    Строка (необязательно)

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

  • parentId

    string | number необязательный

    Идентификатор родительского пункта меню. Позволяет сделать пункт дочерним по отношению к ранее добавленному пункту.

  • targetUrlPatterns

    string[] необязательно

    Как и documentUrlPatterns, фильтры на основе атрибута src тегов img, audio и video, а также атрибута href тегов a.

  • название

    Строка (необязательно)

    Текст, который будет показываться в элементе. Это обязательный параметр, если только type не равно separator. Если контекст – selection, используйте в строке %s, чтобы показать выбранный текст. Например, если значение этого параметра – "Перевести '%s' на поросячью латынь", а пользователь выбирает слово "круто", то пункт контекстного меню для выбранного фрагмента будет выглядеть так: "Перевести 'круто' на поросячью латынь".

  • тип

    ItemType необязательный

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

  • отображается

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

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

  • onclick

    void optional

    Функция, которая вызывается при нажатии на пункт меню. Этот метод недоступен в сервис-воркере. Вместо него нужно зарегистрировать прослушиватель для contextMenus.onClicked.

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

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

    • информация

      Информация об элементе, на который нажал пользователь, и контексте, в котором это произошло.

    • табуляция

      Сведения о вкладке, на которой был выполнен клик. Этот параметр отсутствует для приложений платформы.

ItemType

Chrome 44 и более поздних версий;

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

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

"normal"

"checkbox"

"radio"

"separator"

OnClickData

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

Свойства

  • выбрано

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

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

  • доступно для редактирования

    Логическое значение

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

  • frameId

    number (необязательно)

    Chrome 51 и более поздних версий;

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

  • frameUrl

    Строка (необязательно)

    URL фрейма элемента, в котором было нажато контекстное меню (если оно было во фрейме).

  • linkUrl

    Строка (необязательно)

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

  • mediaType

    Строка (необязательно)

    Одно из значений: image, video или audio, если контекстное меню было активировано на одном из этих типов элементов.

  • menuItemId

    string | number

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

  • pageUrl

    Строка (необязательно)

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

  • parentMenuItemId

    string | number необязательный

    Родительский идентификатор (если есть) для объекта, по которому был выполнен клик.

  • selectionText

    Строка (необязательно)

    Текст для выбора контекста (если есть).

  • srcUrl

    Строка (необязательно)

    Присутствует у элементов с URL src.

  • wasChecked

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

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

Свойства

ACTION_MENU_TOP_LEVEL_LIMIT

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

Значение

6

Методы

create()

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

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

Параметры

  • createProperties
  • обратный вызов

    function необязательно

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

    () => void

Возвраты

  • number | string

    Идентификатор нового объекта.

remove()

Promise
chrome.contextMenus.remove(
  menuItemId: string | number,
  callback?: function,
)
: Promise<void>

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

Параметры

  • menuItemId

    string | number

    Идентификатор удаляемого пункта контекстного меню.

  • обратный вызов

    function необязательно

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

    () => void

Возвраты

  • Promise<void>

    Chrome 123 и более поздних версий

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

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

removeAll()

Promise
chrome.contextMenus.removeAll(
  callback?: function,
)
: Promise<void>

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

Параметры

  • обратный вызов

    function необязательно

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

    () => void

Возвраты

  • Promise<void>

    Chrome 123 и более поздних версий

    Выполняется, когда удаление завершено.

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

update()

Promise
chrome.contextMenus.update(
  id: string | number,
  updateProperties: object,
  callback?: function,
)
: Promise<void>

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

Параметры

  • id

    string | number

    Идентификатор объекта, который нужно обновить.

  • updateProperties

    Объект

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

    • выбрано

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

    • контексты

      [ContextType, ...ContextType[]] необязательный

    • documentUrlPatterns

      string[] необязательно

    • включено

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

    • parentId

      string | number необязательный

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

    • targetUrlPatterns

      string[] необязательно

    • название

      Строка (необязательно)

    • тип

      ItemType необязательный

    • отображается

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

      Chrome 62 и более поздних версий

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

    • onclick

      void optional

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

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

      • информация
        Chrome 44 и более поздних версий;
      • табуляция
        Chrome 44 и более поздних версий;

        Сведения о вкладке, на которой был выполнен клик. Этот параметр отсутствует для приложений платформы.

  • обратный вызов

    function необязательно

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

    () => void

Возвраты

  • Promise<void>

    Chrome 123 и более поздних версий

    Выполняется, когда контекстное меню обновлено.

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

События

onClicked

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

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

Параметры

  • обратный вызов

    function

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

    (info: OnClickData, tab?: tabs.Tab) => void