Автор оригинала: Tarique Ejaz.
В мире веб-разработки Chrome Hearnions – это довольно удобный набор инструментов, чтобы иметь вокруг.
Независимо от того, используете ли вы их, чтобы добавить заголовки к простым запросам или соскрести важные данные из DOM, расширения помогают обеспечить дополнительную функциональность, которая облегчает жизнь.
Я начал играть с развитием расширения хрома для использования, который я имел в виду на работе. Именно тогда я наткнулся на то, как мы проходим вокруг определенных данных с веб-страницы к расширению. И отсутствие упрощенного гида заставило меня написать эту статью.
У нас есть Документация Chrome API и действительно очень тщательно. Но я считаю, что я считаю более визуальным учеником, и возможность визуализировать, как мы передаем сообщения между скриптами расширения, помог упростить общую разработку.
Сообщение прохождение: взаимодействие между скриптами
Удлинение, как предполагает имя, похоже на слой сверху существующей веб-страницы, которую вы пытаетесь получить доступ. Браузер действует как контейнер.
Он в основном содержит следующие скрипты:
- Всплывающий скрипт – Локальный файл JavaScript для расширения DOM
- Фоновый скрипт – обеспечивает постоянство и обрабатывает фоновые события
- Сценарий контента – скрипты, которые работают в изоляции в контексте веб-страницы
- Инъекционный скрипт – скрипты, которые программно впрыскиваются на веб-страницу
Обычно, если вам нужно просто иметь дело с содержимым DOM, то способ расширения расширения относительно простым.
RAW HTML уже доступен для сценария содержимого, и все, что вам нужно сделать, это передавать его всплывающему скрипту.
Однако, если вам нужно получить доступ к переменным и функциям страницы, процесс становится немного сложно.
Переменные и функции, доступные в контексте страницы, скажем, в окно Объект не доступен для сценариев содержимого, поскольку они имеют тенденцию к работе в специальной среде JavaScript. У них есть доступ только к доме страницы, но не переменные и функции.
Чтобы получить доступ к переменным и функциям страницы, мы вводим скрипты, добавив их к DOM. Это делает браузер предположить, что он работает в контексте веб-страницы. В свою очередь, в свою очередь обеспечивает доступ к введению скрипта к локальным переменным и функциям.
Поскольку расширения Chrome являются приводными в результате их архитектуры, после того, как введенные скрипты имеют доступ к переменным и функциям страницы, они могут передавать его в сценарий содержимого.
Сценарий содержимого затем передает эти объекты на страницу фона.
И, наконец, всплывающий скрипт может вызвать страницу фона, используя API расширения и передавать его на расширение DOM.
Теперь мы построим простое расширение наблюдения производительности, которое считывает данные о производительности из глобального окна объекта страницы и отображает необходимые метрики для пользователя. Давайте попадем в код тогда.
Достаточно разговоров, покажи мне код
Вы можете найти полный репозиторий кода для проекта здесь Отказ Давайте быстро пройди через основные файлы и важные функциональные возможности, которые они предлагают.
Файл манифеста
Каждое хромированное расширение нуждается в Манифест файл. Он в основном файл для отформатирования JSON, который предоставляет набор метаданных, поэтому браузер может распознать разрешения, которые необходимо предоставить, а также вероятное эксплуатационное достижение расширения.
Вот манифест, используемый для нашего применения.
Некоторые из важных свойств, которые нам нужно сосредоточиться, являются следующими:
-
Фон– принимает массив сценариев, которые будут работать на странице фона. Содержание скрипты– включает в себя массив сценариев содержимого, которые мы хотим работать как часть контекста веб-страницы.-
web_accessible_resources– Массив упакованных ресурсов, как ожидается, будет использоваться в контексте веб-страницы. Например, изображение, которое мы намереваемся встроить на страницу или пользовательский скрипт, который мы хотим вводить. Разрешения– позволяет вашему расширению получить доступ к определенным хромам API, как вкладки в этом случае.
Сценарий содержимого
Скрипты содержимого имеют легкий доступ к DOM веб-страницы. Мы используем сценарий содержимого для добавления нашего пользовательского сценария – INJECT-SCRIPT.JS – в домо.
Сценарий содержимого также одновременно продолжает слушать любое сообщение, отправляемое вверх по течению из пользовательского сценария.
Как только мы получим сообщение из введенного скрипта, мы запускаем быструю проверку данных, полученные и проверили, установлено ли наш продление. Однажды сделано, мы просто используем Chrome’s API Runtime API Чтобы отправить данные, полученные вперед на страницу фона.
Инъекционный скрипт
Пользовательский скрипт может получить доступ к глобальным переменным и функциям, таким как окно объект. Мы отображаем только свойства, которые мы требуем.
Сообщение из пользовательского скрипта безопасно сообщается на сценарий содержимого, используя window.postmessage функция. В этом случае A Setinterval Функция используется для динамического обновления свойств, которые мы наблюдаем.
Фоновый скрипт
Фоновый скрипт слушает любое сообщение, передаваемое сценарием содержимого, используя API выполнения. окно Объект фоновой страницы затем обновляется с Tab.id Выступает в качестве идентификатора.
Всплывающий скрипт
Сценарий всплывающего окна – это то, где мы наконец читаем данные, которые мы закупили из нашего пользовательского сценария. Это также место, где мы кодируем какие-либо необходимые операции JavaScript.
Страница фона извлекается с помощью GetBackugePage Способ расширения API. ID активной вкладки запрашивается с использованием Tabs.Query Способ вкладок API для правильного извлечения соответствующих данных.
Таким образом, мы можем наконец получать и составлять данные, которые нам нужны – Производительность В нашем случае – эффективно в нашем расширении.
Учреждение UI и другой косметический код доступны в репозитории, для дальнейшей ссылки.
Последние мысли
Сообщение прохождение является важной концепцией, когда речь идет о разработке хромированного расширения. Это только один из нескольких способов, которыми вы можете общаться между скриптами.
Я потратил несколько часов, чтобы выяснить, как это будет работать для моего случая использования. Надеюсь, это простое прохождение и визуальное представление спасает вас некоторое время.
Я бы предложил играть с кодом для немного. Если у вас есть какие-либо вопросы, не стесняйтесь добраться до меня на Linkedin. .
Тем временем продолжайте кодирование.
Оригинал: “https://www.freecodecamp.org/news/chrome-extension-message-passing-essentials/”