Шаблоны и практики для связи между веб-расширениями и веб-приложением

Я разрабатываю расширение и немного застрял в связи между веб-приложением, контентом-скриптом расширения и связью между скриптом контента и фоновым скриптом. Похоже, что HTML5 Messaging API должен использоваться, но то, как это сделать в точном контексте, не только сложно понять и реализовать, но и сбить с толку из-за различий в подходе в браузерах (которые, по-видимому, поддерживают один и тот же API).

Например, Firefox не распознает externally_connectable в manifest.json, где назначаются разрешения для хостов, откуда поступают запросы. Так как же Firefox ожидает от вас, чтобы разработчик назначал права доступа? Я полагаю, он ожидает, что вы делаете это в контент-скрипте?

В частности, я не совсем понимаю, каков наилучший способ обмена данными между приложением и скриптом содержимого / фона. Это лучший способ postMessage / addListener методы и работают ли они во всех контекстах; или как кто-то упомянул: window.dispatchEvent должно быть предпочтительным?

Все руководства, имеющие отношение к пункту выше, приветствуются.

1 ответ

Сообщения, приходящие извне расширения, не являются чем-то, с чем у меня есть опыт (и я не уверен, что вы это имеете в виду).

Вы должны убедиться, что вы полностью понимаете обзор расширений Chrome, который обязательно нужно прочитать.

Относительно Window.dispatch и использования других API, я предлагаю придерживаться API chrome.xxx, если они не могут что-то сделать.

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

Сценарии содержимого являются ключом к взаимодействию с самой страницей, но их область действия не совпадает с областью, js изолирован, но они, конечно, могут получить доступ к DOM.

Сценарии содержимого могут быть загружены при загрузке каждой страницы или только нескольких страниц путем включения их в манифест. Или мощно, они могут быть введены с помощью фоновой страницы или всплывающего окна - так что, если вы хотите контролировать из всплывающего окна, вы можете использовать программную инъекцию - полезный шаблон заключается в том, что всплывающее окно (или фон) может запустить URL в На вкладке вставьте jquery (любую версию, потому что она изолирована), затем вставьте скрипт контента, затем скрипт контента может использовать $(document).ready(), чтобы дождаться загрузки страницы (не нужно использовать jQuery, но полезен тот факт, что вы можете не заботиться о том, имеет ли страница jQuery или нет, или какую версию он может иметь).

Если вы уже знали это много, вы, возможно, не так смущены, как вы думаете:)

Другие вопросы по тегам