Spec-Zone.ru › Web Extensions

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 Необязательно

array string. Позволяет ограничить применение пункта только к документам, чьи 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 Необязательно

array string. Похоже на 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 Необязательно

menus.ItemType. Тип пункта меню: "normal", "checkbox", "radio", "separator". По умолчанию "normal".

viewTypes Необязательно

extension.ViewType. Список типов представления, где будет показан пункт меню. По умолчанию любое представление, включая те, у которых нет viewType.

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);
  }
});

Примеры расширений

  • menu-accesskey-visible
  • menu-demo
  • menu-labelled-open

Совместимость с браузерами

Рабочий стол Мобильные устройства
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API