Рубрики
Без рубрики

Урок расширения Chrome: Как пройти сообщения из контекста страницы

В мире веб-разработки Chrome Hearnions – это довольно удобный набор инструментов, чтобы иметь вокруг. Независимо от того, используете ли вы их, чтобы добавить заголовки к простым запросам или соскрести важные данные из DOM, расширения помогают обеспечить дополнительную функциональность, которая облегчает жизнь. Я начал играть с

Автор оригинала: 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/”