menus.update()
Обновляет ранее созданный пункт меню.
Для совместимости с другими браузерами, Firefox предоставляет доступ к этому методу через contextMenus пространство имён, а также через menus пространство имён.
Это асинхронная функция, которая возвращает Promise.
Синтаксис
let updating = browser.menus.update( id, // integer or string updateProperties // object )
Параметры
id-
integerилиstring. Идентификатор пункта меню, который нужно обновить. updateProperties-
object. Свойства для обновления. Такие же, как в объектеcreateProperties, переданном вmenus.create(), за исключением того, чтоidнельзя задать. Кроме того,iconsможно изменить только для команд меню, а не для контекстного меню верхнего уровня. Иконка верхнего уровня соответствует основной иконке расширения, как указано в файле манифеста расширения.-
checkedНеобязательно -
boolean. Начальное состояние пункта типа «чекбокс» или «радиокнопка»:trueдля выбранного иfalseдля невыбранного. Только один пункт типа «радиокнопка» может быть выбран в группе радиокнопок. -
commandНеобязательно -
string. Строка, описывающая действие, которое должно быть выполнено при щелчке пользователем по пункту. Признаваемые значения:-
"_execute_browser_action": имитирует щелчок по действию браузера расширения, открывая всплывающее окно, если оно есть (только для манифеста версии 2) -
"_execute_action": имитирует щелчок по действию расширения, открывая всплывающее окно, если оно есть (только для манифеста версии 3) -
"_execute_page_action": имитирует щелчок по действию страницы расширения, открывая всплывающее окно, если оно есть -
"_execute_sidebar_action": открывает боковую панель расширения
См. документацию по специальным сокращениям в ключе манифеста
commandsдля получения подробностей.При указании одного из этих значений щелчок по пункту не вызывает событие
menus.onClicked; вместо этого срабатывает стандартное действие, например, открытие всплывающего окна. В противном случае щелчок по пункту вызываетmenus.onClicked, и событие может быть использовано для реализации резервного поведения. -
-
contextsНеобязательно -
array. Массив контекстов, в которых будет отображаться этот пункт меню. Если этот параметр опущен:menus.ContextType- если у родительского пункта заданы контексты, то этот пункт унаследует контексты родителя
- в противном случае пункту присваивается массив контекстов ["page"].
-
documentUrlPatternsНеобязательно -
arraystring. Позволяет ограничить применение пункта только к документам, чьи URL соответствуют одному из указанных шаблонов соответствия. Это также применяется к фреймам. -
enabledНеобязательно -
boolean. Включен или выключен данный пункт меню. По умолчаниюtrue. -
iconsНеобязательно -
object. Одна или несколько пользовательских иконок для отображения рядом с пунктом. Пользовательские иконки можно задавать только для пунктов, появляющихся в подменю. Этот параметр является объектом с одним свойством для каждой заданной иконки: имя свойства должно включать размер иконки в пикселях, а путь — относительный к иконке из корневой директории расширения. Браузер пытается выбрать иконку размером 16x16 пикселей для нормального отображения или 32x32 пикселя для отображения высокой плотности. Чтобы избежать масштабирования, вы можете задать иконки следующим образом:"icons": { "16": "path/to/geo-16.png", "32": "path/to/geo-32.png" }
Или же можно задать единственную SVG-иконку, и она будет масштабироваться должным образом:
"icons": { "16": "path/to/geo.svg" }
Примечание: Пункт меню верхнего уровня использует иконки, указанные в манифесте, а не те, что указаны с этим ключом.
-
idНеобязательно -
string. Уникальный идентификатор, который нужно присвоить этому пункту. Обязательно для страниц событий. Не может совпадать с другим идентификатором для этого расширения. -
onclickНеобязательно -
function. Функция, которая будет вызвана при нажатии на пункт меню. Страницы событий не могут использовать это: вместо этого они должны зарегистрировать обработчик дляmenus.onClicked. -
parentIdНеобязательно -
integerилиstring. Идентификатор родительского пункта меню; это делает пункт дочерним по отношению к ранее добавленному пункту. Примечание: если вы создали более одного пункта меню, пункты будут размещены в подменю. Родитель подменю будет обозначен именем расширения. -
targetUrlPatternsНеобязательно -
arraystring. Похоже наdocumentUrlPatterns, но позволяет фильтровать поhrefтегов и атрибутуsrcтегов img/audio/video. Этот параметр поддерживает любые схемы URL, даже те, которые обычно не разрешены в шаблоне соответствия. -
titleНеобязательно -
string. Текст, который нужно отобразить в пункте. Обязательно, еслиtypeне равно "separator".Вы можете использовать "
%s" в строке. Если вы сделаете это в пункте меню, и в странице будет выделен текст, когда меню будет показано, тогда выделенный текст будет интерполирован в заголовок. Например, еслиtitleравно "Translate '%s' to Pig Latin", а пользователь выбирает слово "cool", затем активирует меню, тогда заголовок пункта меню будет: "Translate 'cool' to Pig Latin".Если заголовок содержит амперсанд "&", тогда следующий символ будет использован в качестве клавиши доступа к пункту, и амперсанд не будет отображаться. Исключения из этого:
- Если следующий символ также является амперсандом: тогда отображается один амперсанд, и клавиша доступа не устанавливается. По сути, "&&" используется для отображения одного амперсанда.
- Если следующие символы — директива интерполяции "%s": тогда амперсанд не будет отображаться, и клавиша доступа не будет устанавливаться.
- Если амперсанд — последний символ в заголовке: тогда амперсанд не будет отображаться, и клавиша доступа не будет устанавливаться.
Только первый амперсанд будет использован для установки клавиши доступа: последующие амперсанды не будут отображаться, но не будут устанавливать клавиши. Так, "&A and &B" будет отображаться как "A and B" и устанавливать "A" в качестве клавиши доступа.
-
typeНеобязательно -
. Тип пункта меню: "normal", "checkbox", "radio", "separator". По умолчанию "normal".menus.ItemType -
viewTypesНеобязательно -
. Список типов представления, где будет показан пункт меню. По умолчанию любое представление, включая те, у которых нетextension.ViewTypeviewType. -
visibleНеобязательно -
boolean. Отображается ли пункт в меню. По умолчаниюtrue.
-
Возвращаемое значение
A Promise, который будет выполнен без аргументов, если обновление прошло успешно, или отклонен с сообщением об ошибке, если обновление не удалось.
Примеры
В этом примере создаётся пункт меню, затем обновляется его заголовок при нажатии на него:
function onUpdated() { console.log("item updated successfully"); } function onError() { console.log("error updating item:", browser.runtime.lastError); } browser.menus.create({ id: "do-not-click-me", title: "Do not click this button", contexts: ["all"] }); browser.menus.onClicked.addListener((info, tab) => { if (info.menuItemId === "do-not-click-me") { let updating = browser.menus.update(info.menuItemId, { title: "Do not click this button again" }); updating.then(onUpdated, onError); } });
Примеры расширений
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | |
update |
Да | Да | 5548 | ? | Да | 14 | ? | ? | Нет | ? | Нет | ? |
Примечание: Этот API основан на API chrome.contextMenus Chromium. Эта документация взята из context_menus.json кода Chromium.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/menus/update