0

В настоящее время самое контекстное меню для моего расширения использует заголовок manifest.jsonname. name довольно длинный и создает для него большое контекстное меню. Можно ли изменить название, которое использует контекстное меню? Я предпочел бы использовать manifest.jsonshort_name.Изменить расширение Наибольшее контекстное меню Название

Я не смог найти что-либо в the docs, упомянутом выше.

Пример:

manifest.json

{ 
    "name": "My extension - And a blurb", 
    "short_name": "My extension" 
    ... 
    "permissions": [ 
     "contextMenus" 
    ], 
    "icons": { 
     "16": "icon-bitty.png", 
     "48": "icon-small.png", 
     "128": "icon-large.png" 
    }, 
    ... 
    } 

background.js
chrome.contextMenus.create({"title": "Test item"}); 

Результаты в контекстном меню, которое выглядит как:

My extension - And a blurb 
| 
--- Test item 

Я хочу, чтобы это было:

My extension 
| 
--- Test item 
+0

Пожалуйста, задавайте вопрос по теме: включите ** полный ** [mcve], который дублирует проблему. Включая * manifest.json *, некоторые из фоновых * и * скриптов содержимого. Вопросы, требующие помощи по отладке («** почему этот код не работает? **)) должны включать: ► желаемое поведение, ► конкретную проблему или ошибку * и * самый короткий код, необходимый для его воспроизведения ** в вопросе сам**. Вопросы без четкого описания проблемы не полезны другим читателям. Смотрите: «** Как создать [mcve] **», [о каких темах я могу спросить здесь?] (Http://stackoverflow.com/help/on-topic) и [ask]. – Makyen

+0

В принципе, если мы собираемся исследовать это и понять * точно * то, о чем вы говорите, [mcve] проделает длинный путь, чтобы облегчить его. Кроме того, небольшой захват экрана, чтобы указать * точно * то, что вы говорите, было бы полезно. Я могу * угадать *, о чем вы говорите, и я считаю, что знаю, но я не знаю, что я прав в своем понимании того, в каком контекстном меню вы говорите. – Makyen

+0

Добавлен пример – kspearrin

ответ

1

Такое поведение происходит только если у вас есть более чем на 1 пункт меню и не заботиться о своей собственной иерархии.

Если вы объявите свой собственный «корневой» элемент, и все остальные элементы явно внутри него, этого не произойдет.

chrome.contextMenus.removeAll(); 
chrome.contextMenus.create({title: "How fancy", id: "root"}); 
chrome.contextMenus.create({title: "Indeed", id: "sub1", parentId: "root"}); 
chrome.contextMenus.create({title: "Indubitably", id: "sub2", parentId: "root"}); 

приведет к

[your 16x16 icon] How fancy 
| 
+- Indeed 
| 
+- Indubitably 

В общем, убедитесь, что вы назначаете идентификаторы вашего контекстного меню. Это полезно для многих целей.

Примечание: технически, contextMenus асинхронный API и один должен, в идеале, цепь вызовов вместо просто их секвенирования, а последовательность вызовов в то же асинхронной API, кажется, работает хорошо в этом случае. Если вам нужно запустить код после добавления всех меню, сделайте это в обратном вызове последнего create.

 Смежные вопросы

  • Нет связанных вопросов^_^