2016-12-16 2 views
0

chrome.contextMenus поддерживает создание элементов контекстного меню в расширении. Я пытаюсь запустить его в окне консоли (F12), чтобы поэкспериментировать с созданием нового элемента в контекстном меню текущей веб-страницы, но он не работает. Являются ли API-интерфейсы контекстного меню не поддерживаемыми в консольных окнах и почему, если это так?Создать контекстное меню в консоли F12 в Chrome?

+1

Вы пытаетесь создать элемент контекстного меню * для * DevTools или пытаетесь использовать 'chrome.contextMenus. *' Из * в * консоли DevTools для создания/обновления контекстного меню для веб-страниц ? – Makyen

+0

@Makyen Я пытаюсь проверить chrome.contextMunus. * В DevTools перед тем, как применить его к расширению. Кажется, это не правильный способ проверить. – Thomson

+0

К сожалению, я все еще не понимаю, что вы хотите делать. Вы хотите добавить в контекстное меню, которое существует в DevTools? Или контекстное меню, которое существует на обычных страницах? – Makyen

ответ

2

Хром имеет несколько разных консолей/DevTools, которые вы можете открыть для расширения. This answer описывает, как вы можете открыть различные DevTools, которые доступны. Тем не менее, вы никогда не сможете получить доступ/выполнить API chrome.contextMenu.* от F12 DevTools, поскольку единственный контекст расширения, с которым вы можете взаимодействовать с этим DevTools, - это контекст контекста, а контентные скрипты не имеют доступа к API chrome.contextMenu.*. Этот API доступен только в фоновом контексте.

Таким образом, вам необходимо использовать DevTools для вашей справочной страницы . Кроме того, вам, разумеется, необходимо будет объявить contextMenuspermission в вашем manifest.json. The answer linked above покажет/расскажет вам, как открыть DevTools для вашей фоновой страницы. Оттуда вы сможете выполнить вызовы API chrome.contextMenu.* с консоли JavaScript.


  1. Консоль для других страниц, которые находятся в фоновом контексте (всплывающих окнах, вариантов страниц, панели, расширение страницы, открытой в закладках и т.д.) не появляется, чтобы обеспечить доступ к chrome.* API. Тестирование в этих консолях показало, что chrome не определено.
+0

Кажется, что 'chrome. *' Определены в контексте веб-страницы, но с очень небольшим количеством включенных свойств. – Thomson

+0

Да, Chrome задает 'chrome' с несколькими свойствами в контексте веб-страницы. Некоторые из них даже перекрывают API расширения Chrome (например, «runtime»). – Makyen

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