Более одного пункта меню верхнего уровня в chrome.contextMenus. Как?

Кто нибудь знает о возможности добавления нескольких пунктов меню в контекстное меню расширения chrome?
Очень долго переходить в подменю :(

Дело в том, что при добавлении нескольких пунктов они группируются. Опции в chrome.contextMenus.create я такой не нашел.

Может быть какой хак или флаг браузера?

введите сюда описание изображения

UPD: Все сайты за сутки перерыл и ничего не нашел :( Пришлось ниже...


Ответы (1 шт):

Автор решения: Alexander Lonberg

Важное Замечание: Никогда так не делайте!

Только для личного использования и непреодолимого желания быстрого доступа к меню.

На этой устаревшей странице сказано:

  • Элементы расширения отображаются в нижней части контекстного меню над «Inspect element», отсортированные по имени расширения.
  • Если расширение добавляет более 1 элемента, мы автоматически помещаем эти элементы в подменю.
  • Слева от элемента верхнего уровня появится значок расширения.

Это оставляет последнюю возможность - создать несколько расширений ради одного меню:

  • Основное Master - включает в себя управление slave расширениями
  • Зависимые Slave - всего несколько строк кода для пунктов(он может быть один) и взаимодействия с master

Проблема сортировки/именования элементов

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

С другой строны, стандартное использование contextMenus, не позволяет установить несколько иконок. С несколькими мы получаем свободу установки иконок верхнего уровня - куда'ж без дизайна.

Enable/Disable ...

... только одним ведущим Master(это когда на вкладке расширений мы кликаем на отключить) достигается с помощью:

Взаимодействие | Long-lived connections

Порты "живут" до выключения master и кроме port.onMessage() и port.postMessage() больше особо ничего не надо. Вся задача соединения послать click и checked от slave и получить enabled:true|false от master.

Результат

введите сюда описание изображения

Минусы

  • На странице chrome://extensions/ будет беспорядок - особо туда лазить необходимости нет.
  • Подбор имен для сортировки.

Плюсы

  • Установка иконок для всех пунктов верхнего уровня, что нельзя сделать для сгруппированного меню.
  • Желаемый быстрый доступ в один клик без раздражающих переходов.
→ Ссылка