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
Различные контексты, в которых может появляться меню. Значение all эквивалентно комбинации всех остальных контекстов, кроме launcher и tab. Контекст launcher поддерживается только приложениями и используется для добавления пунктов в контекстное меню, которое появляется при нажатии на значок приложения на панели запуска, панели задач, панели Dock и т. д. На разных платформах могут действовать ограничения на то, что поддерживается в контекстном меню панели запуска.
Перечисление
"all"
"page"
"frame"
"selection"
"link"
"editable"
"image"
"video"
"audio"
"launcher"
"action"
Применяется к контекстному меню действия расширения (значок на панели инструментов).
"tab"
Применяется к контекстному меню вкладки на панели вкладок.
CreateProperties
Свойства нового пункта контекстного меню.
Свойства
-
выбрано
Логическое значение (необязательно)
Начальное состояние флажка или переключателя:
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
Тип пункта меню.
Перечисление
"normal"
"checkbox"
"radio"
"separator"
OnClickData
Информация, отправляемая при нажатии на пункт контекстного меню.
Свойства
-
выбрано
Логическое значение (необязательно)
Флажок, указывающий на состояние флажка или переключателя после нажатия.
-
доступно для редактирования
Логическое значение
Пометка, указывающая, можно ли редактировать элемент (текстовое поле, текстовая область и т. д.).
-
frameId
number (необязательно)
Chrome 51 и более поздних версий;Идентификатор фрейма элемента, в котором было открыто контекстное меню (если элемент находится во фрейме).
-
frameUrl
Строка (необязательно)
URL фрейма элемента, в котором было нажато контекстное меню (если оно было во фрейме).
-
linkUrl
Строка (необязательно)
Если элемент является ссылкой, то URL, на который он указывает.
-
mediaType
Строка (необязательно)
Одно из значений: image, video или audio, если контекстное меню было активировано на одном из этих типов элементов.
-
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()
chrome.contextMenus.remove(
menuItemId: string | number,
callback?: function,
): Promise<void>
Удаляет пункт контекстного меню.
Параметры
-
string | number
Идентификатор удаляемого пункта контекстного меню.
-
обратный вызов
function необязательно
Параметр
callbackвыглядит следующим образом:() => void
Возвраты
-
Promise<void>
Chrome 123 и более поздних версийВыполняется, когда контекстное меню удалено.
Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.
removeAll()
chrome.contextMenus.removeAll(
callback?: function,
): Promise<void>
Удаляет все пункты контекстного меню, добавленные этим расширением.
Параметры
-
обратный вызов
function необязательно
Параметр
callbackвыглядит следующим образом:() => void
Возвраты
-
Promise<void>
Chrome 123 и более поздних версийВыполняется, когда удаление завершено.
Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.
update()
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
-
информация
-
табуляция
tabs.Tab необязательно
-