Как сделать расширение для браузера яндекс
Делаем своё расширение для браузера за 10 минут
Cнова запускаем снежинки.
В конце 2020 года мы делали проект со снежинками — писали специальный скрипт, который запускал падающий снег на сайтах. Если бы мы хотели сделать такой снег на любом своём сайте, это не составило бы труда: добавляешь скрипт в код страницы, и готово.
А вот на чужих сайтах была проблема. Скрипт нужно было вставлять через консоль. А если на сайте была настроена политика безопасности, которая запрещает запуск внешних скриптов, то магия не срабатывала.
Сегодня мы это исправим — сделаем расширение для браузера, которое может запускать любой скрипт на любой странице. Мы охватим принцип, на основе которого вы сможете сделать собственные расширения, в том числе намного более сложные.
👉 Что такое расширение
Расширение для Chrome — это небольшая программа, которая выполняется внутри браузера и помогает расширить возможности сайтов. Сила расширения в том, что оно может выполняться прямо из меню браузера и не зависит от политик безопасности.
Примеры того, что может сделать расширение:
В этой статье
Мы сделаем самое простое расширение для браузера Chrome, которое позволит запускать скрипт со снежинками на любом сайте, независимо от настроенной политики безопасности. Для этого воспользуемся официальным руководством Google по созданию расширений.
Манифест
В каждом расширении для браузера должен быть манифест — документ, в котором написано:
Манифест задаёт общие правила для всего расширения, поэтому манифест — единственный обязательный компонент. Можно обойтись без иконок и скриптов, но манифест обязательно должен быть.Каждый манифест хранится в файле manifest.json — создадим пустой файл с таким именем и напишем внутри такое:
<
«name»: «Запускаем снежинки на любом сайте»,
«description»: «Проект журнала Код»,
«version»: «1.0»,
«manifest_version»: 3
>
Первые две строчки — это название и подробное описание расширения. Третья отвечает за номер версии расширения, а последняя говорит браузеру, какая версия манифеста используется в описании. На момент выхода статьи в феврале 2021 года используется третья версия.
Сохраняем файл и всё, расширение готово. Оно ничего не умеет, ничего не делает, зато мы уже можем добавить его в браузер. Для этого запускаем Хром и в адресной строке пишем:
Мы попадаем на страницу, которая нам покажет все установленные расширения:
Чтобы добавить своё расширение, в правом верхнем углу включаем режим разработчика, а затем нажимаем «Загрузить распакованное расширение»:
Теперь выбираем папку, в которой лежит наш манифест:
Отлично, мы только что добавили в браузер новое расширение:
Теперь мы можем обновлять наш манифест, класть в ту же папку дополнительные файлы, а для обновления в браузере достаточно будет нажать на круглую стрелку на карточке расширения.
Чтобы было проще работать и тестировать расширение, закрепим его на панели браузера:
Иконки
У расширения есть две иконки, которыми мы можем управлять:
Чтобы не рисовать всё с нуля, скачаем папку с иконками из того же руководства Google и положим её в ту же папку, что и манифест:
Теперь добавим иконки в манифест. За картинку в карточке отвечает блок icon, а за иконку на панели — блок action. Разные размеры картинки нужны для того, чтобы на разных мониторах с любой плотностью пикселей иконки выглядели хорошо:
Сохраняем манифест, обновляем расширение на странице настроек и смотрим результат:
Настраиваем разрешения
Разрешения — это то, что браузер позволяет делать расширению со страницами и с их содержимым. Для запуска снежинок нам нужно сделать две вещи:
Чтобы получить доступ к активной вкладке и к запуску скриптов, добавим в манифест такую строку:
«permissions»: [«activeTab», «scripting»],
Показываем меню
Если мы сейчас нажмём на иконку расширения на панели браузера, то ничего не призойдёт, потому что мы ничего не запрограммировали. Исправим это — сделаем так, чтобы при нажатии расширение показывало кнопку запуска. Когда расширение будет уметь больше, вместо одной кнопки можно будет показать целое меню.
Чтобы сделать всплывающее меню, добавим в манифест в раздел action такую строку:
Она означает, что при нажатии на иконку мы увидим рядом с ней мини-страничку, на которой что-то будет.Создадим в той же папке расширения файл popup.html и добавим в него такой код:
Сохраняем манифест, обновляем его на странице настроек и видим, что у нашего расширения появилось меню с кнопкой:
Запускаем снежинки
Вся магия будет происходить в файле popup.js — откроем его и добавим такой код:
Последнее, что нам осталось сделать, — положить в функцию snowFall() полный код скрипта из проекта со снежинками и сохранить файл.
Проверка
В прошлый раз мы не смогли запустить скрипт на любой странице Яндекса — мешала политика безопасности. Теперь всё работает:
Скачать упакованное расширение. Перед установкой его нужно распаковать в любую папку.
Hello, Word! Разрабатываем браузерное расширение в 2021-м
Меня зовут Саша Коновалов, я разработчик в компании Oxonit и наставник на программе «Мидл фронтенд-разработчик» в Яндекс.Практикуме.
На примере разработки расширения «Hello, Word» я расскажу, как разрабатывать кроссбраузерное расширение со знаниями современного фронтенда:
Структура расширения, о котором я расскажу в статье, близка к проекту SponsorBlock. Этот проект вдохновлял меня во время работы над собственным.
Итак, создадим расширение – Hello, Word!
Hello, Word — это расширение для перевода и запоминания слов. Оно стало прототипом моего пет-проекта Wordzzz, поэтому в посте я буду приводить примеры из него.
Рисунок 1. Описание функциональности
Что делает расширение?
Архитектура расширений
MDN Web Docs определяет расширение как набор файлов, который заботливо упакован для дальнейшего распространения и установки в браузер. Ниже указаны файлы, которые могут присутствовать в расширении.
manifest.json — обязательный файл для любого расширения. В нём содержатся имя расширения, требуемые разрешения и версия, а также указатели на другие файлы расширения.
Помимо этого в манифесте могут быть и указатели на другие файлы, например:
Рисунок 2. Архитектура расширения Hello, Word!
Архитектура проекта
Можно разрабатывать простые расширения, как в инструкции от Chrome. Мне же интересно расширить эту инструкцию для более сложных проектов, где надо добавить общие компоненты, системы сборки, кроссбраузерность, react, typescript — всё, без чего сложно представить современный фронтенд-проект.
Рисунок 3. Архитектура проекта Hello, Word!
Из рисунка выше видно, что проект состоит из нескольких частей:
Структура проекта
Управлять связями между пакетами помогает инструмент lerna (подробнее про настройку и использование можно прочитать на официальном сайте). Как и писал выше, в Common — общие стили и компоненты, общая статика (шрифт и иконки) в public-папке в корне. Web и Extension используют общие компоненты.
Рисунок 4: Структура проекта
В моем случае все пакеты собираются с помощью webpack. Для Extension собираются пять бандлов в дистрибутиве (в соответствии с Рис. 3), manifest.json, в котором указываются эти бандлы, и копируется статика.
Общие компоненты используются в соответствии с инструкцией lerna.
Для запуска расширения используется инструмент web-ext — он устанавливает расширение и позволяет подхватывать изменения кода в это установленное расширение.
Но у инструмента есть и ограничения: расширение может не загрузиться правильно в первый раз. В этом случае поможет сочетание с простым способом — обновлять вручную через панель расширений (в основном для изменений контент-скриптов).
Описание инструментов можно найти здесь.
Как достигается кроссбраузерность
1) Отдельные manifest под разные цели и браузеры
Собирается вебпаком c помощью небольшого написанного модуля под разные окружения и браузеры. В FF, например, нужно расширять наш исходный manifest.json добавлением browser_specific_settings.gecko.id.
2) Safari: конвертация кода в xcode-проект
Я указал —bundle-identifier своего сайта app.wordzzz.HelloWord, вы укажете свой.
Если всё прошло успешно, то увидим такое сообщение:
После конвертации откроется проект и рекомендации не использовать некоторые функции (об этом ниже).
Жмём кнопку Run в XCode и смотрим, как всё работает.
Примечание: Может потребоваться включить «Разрешить неподписанные расширения» в меню «Разработка».
3) Проверка в CSS и немного про пути
До файлов в chromium-браузерах и FF разный относительный путь, поэтому я использовал css-селекторы:
4) Проверка в JS
Тут ничего нового — проверка navigator.userAgent. Например, при публикации в AppStore меня просили убрать кнопку доната.
5) Рекомендации по (не-)использованию определённых функций
Полезные ссылки
Вместо заключения
Как видите, разработать расширение можно и с современным стеком технологий. Я описал свой стек, но можно использовать и другой, важнее было показать подход в целом.
В проекте Hello, Word ещё много чего можно сделать, например, покрыть типами и тестами, использовать препроцессоры и многое другое. Предлагайте в комментариях полезные идеи для улучшения проекта и свои решения и полезные инструменты для разработки расширений. Всем мир.
Расширения
— это встроенные в браузер мини-программы, которые добавляют в браузер новые функциональные возможности, например блокируют неприятную рекламу, включают ночной режим или управляют паролями. В Яндекс.Браузер можно устанавливать расширения, созданные командой браузера, а также расширения из Каталога браузера Opera.
Просмотр списка расширений
Анализ существующих расширений и изучение предпочтений пользователей позволили отобрать для Яндекс.Браузера наиболее популярные, полезные и безопасные расширения.
Также в списке перечислены предустановленные расширения (например, Антишок) и дополнительные функции браузера (например, синхронизация).
Действия с расширениями
Вы можете установить расширения из Каталога браузера Opera, совместимого с Яндекс.Браузером.
Чтобы получить доступ к настройкам расширения:
Предустановленные расширения (Антишок, Блокировка рекламы, Советник, Эфир, Почта и т. п.) удалить нельзя, их можно отключить.
Значок расширения
После включения некоторых расширений их значок появляется справа от Умной строки. Нажав значок, вы получите доступ к функциям расширения:
Если значок расширения не отображается на панели браузера:
Если значков на панели очень много, их можно свернуть:
Задать горячие клавиши для расширений
Вы можете задать горячие клавиши, чтобы быстро активизировать нужное расширение или выполнять различные действия во время его работы:
Какие расширения не поддерживает Яндекс.Браузер?
Расширение является вредоносным и находится в черном списке.
Расширение несовместимо с браузером технически.
Инсталлятор сообщает об успешной установке расширения, но оно не появляется на странице дополнений.
Расширение несовместимо с браузером технически.
Расширение является вредоносным и находится в черном списке.
Расширение несовместимо с браузером технически.
Инсталлятор сообщает об успешной установке расширения, но оно не появляется на странице дополнений.
Расширение несовместимо с браузером технически.
Как добавить новое расширение в Яндекс.Браузер?
Проблемы с расширениями
Расширения «Элементы Яндекса» (Почта, Погода, Пробки и Диск) больше не развиваются и не устанавливаются, их корректная работа не гарантируется. Установите эти сервисы в качестве веб-приложений.
Яндекс.Браузер игнорирует расширения, которые меняют внешний вид или функционал новой вкладки, чтобы не пропадала полезная информация. Вы можете сами отключать ненужные вам блоки: сайты, закрепленные на Табло, новости, погоду и другие виджеты, Дзен. Также вы можете добавить свой фон браузера и изменить тему оформления.
Расширения
— это встроенные в браузер мини-программы, которые добавляют в браузер новые функциональные возможности, например блокируют неприятную рекламу, включают ночной режим или управляют паролями. В Яндекс.Браузер можно устанавливать расширения, созданные командой браузера, а также расширения из Каталога браузера Opera.
Просмотр списка расширений
Анализ существующих расширений и изучение предпочтений пользователей позволили отобрать для Яндекс.Браузера наиболее популярные, полезные и безопасные расширения.
Также в списке перечислены предустановленные расширения (например, Антишок) и дополнительные функции браузера (например, синхронизация).
Расширения
— это встроенные в браузер мини-программы, которые добавляют в браузер новые функциональные возможности, например блокируют неприятную рекламу, включают ночной режим или управляют паролями. В Яндекс.Браузер можно устанавливать расширения, созданные командой браузера, а также расширения из Каталога браузера Opera.
Просмотр списка расширений
Анализ существующих расширений и изучение предпочтений пользователей позволили отобрать для Яндекс.Браузера наиболее популярные, полезные и безопасные расширения.
Также в списке перечислены предустановленные расширения (например, Антишок) и дополнительные функции браузера (например, синхронизация).
Действия с расширениями
Вы можете установить расширения из Каталога браузера Opera, совместимого с Яндекс.Браузером.
Чтобы получить доступ к настройкам расширения:
Предустановленные расширения (Антишок, Блокировка рекламы, Советник, Эфир, Почта и т. п.) удалить нельзя, их можно отключить.
Значок расширения
После включения некоторых расширений их значок появляется справа от Умной строки. Нажав значок, вы получите доступ к функциям расширения:
Если значок расширения не отображается на панели браузера:
Если значков на панели очень много, их можно свернуть:
Задать горячие клавиши для расширений
Вы можете задать горячие клавиши, чтобы быстро активизировать нужное расширение или выполнять различные действия во время его работы:
Какие расширения не поддерживает Яндекс.Браузер?
Расширение является вредоносным и находится в черном списке.
Расширение несовместимо с браузером технически.
Инсталлятор сообщает об успешной установке расширения, но оно не появляется на странице дополнений.
Расширение несовместимо с браузером технически.
Расширение является вредоносным и находится в черном списке.
Расширение несовместимо с браузером технически.
Инсталлятор сообщает об успешной установке расширения, но оно не появляется на странице дополнений.
Расширение несовместимо с браузером технически.
Как добавить новое расширение в Яндекс.Браузер?
Проблемы с расширениями
Расширения «Элементы Яндекса» (Почта, Погода, Пробки и Диск) больше не развиваются и не устанавливаются, их корректная работа не гарантируется. Установите эти сервисы в качестве веб-приложений.
Яндекс.Браузер игнорирует расширения, которые меняют внешний вид или функционал новой вкладки, чтобы не пропадала полезная информация. Вы можете сами отключать ненужные вам блоки: сайты, закрепленные на Табло, новости, погоду и другие виджеты, Дзен. Также вы можете добавить свой фон браузера и изменить тему оформления.
Расширения
— это встроенные в браузер мини-программы, которые добавляют в браузер новые функциональные возможности, например блокируют неприятную рекламу, включают ночной режим или управляют паролями. В Яндекс.Браузер можно устанавливать расширения, созданные командой браузера, а также расширения из Каталога браузера Opera.
Просмотр списка расширений
Анализ существующих расширений и изучение предпочтений пользователей позволили отобрать для Яндекс.Браузера наиболее популярные, полезные и безопасные расширения.
Также в списке перечислены предустановленные расширения (например, Антишок) и дополнительные функции браузера (например, синхронизация).
Расширения
— это встроенные в браузер мини-программы, которые добавляют в браузер новые функциональные возможности, например блокируют неприятную рекламу, включают ночной режим или управляют паролями. В Яндекс.Браузер можно устанавливать расширения, созданные командой браузера, а также расширения из Каталога браузера Opera.
Просмотр списка расширений
Анализ существующих расширений и изучение предпочтений пользователей позволили отобрать для Яндекс.Браузера наиболее популярные, полезные и безопасные расширения.
Также в списке перечислены предустановленные расширения (например, Антишок) и дополнительные функции браузера (например, синхронизация).
Действия с расширениями
Вы можете установить расширения из Каталога браузера Opera, совместимого с Яндекс.Браузером.
Чтобы получить доступ к настройкам расширения:
Предустановленные расширения (Антишок, Блокировка рекламы, Советник, Эфир, Почта и т. п.) удалить нельзя, их можно отключить.
Значок расширения
После включения некоторых расширений их значок появляется справа от Умной строки. Нажав значок, вы получите доступ к функциям расширения:
Если значок расширения не отображается на панели браузера:
Если значков на панели очень много, их можно свернуть:
Задать горячие клавиши для расширений
Вы можете задать горячие клавиши, чтобы быстро активизировать нужное расширение или выполнять различные действия во время его работы:
Какие расширения не поддерживает Яндекс.Браузер?
Расширение является вредоносным и находится в черном списке.
Расширение несовместимо с браузером технически.
Инсталлятор сообщает об успешной установке расширения, но оно не появляется на странице дополнений.
Расширение несовместимо с браузером технически.
Расширение является вредоносным и находится в черном списке.
Расширение несовместимо с браузером технически.
Инсталлятор сообщает об успешной установке расширения, но оно не появляется на странице дополнений.
Расширение несовместимо с браузером технически.
Как добавить новое расширение в Яндекс.Браузер?
Проблемы с расширениями
Расширения «Элементы Яндекса» (Почта, Погода, Пробки и Диск) больше не развиваются и не устанавливаются, их корректная работа не гарантируется. Установите эти сервисы в качестве веб-приложений.
Яндекс.Браузер игнорирует расширения, которые меняют внешний вид или функционал новой вкладки, чтобы не пропадала полезная информация. Вы можете сами отключать ненужные вам блоки: сайты, закрепленные на Табло, новости, погоду и другие виджеты, Дзен. Также вы можете добавить свой фон браузера и изменить тему оформления.
Расширения
— это встроенные в браузер мини-программы, которые добавляют в браузер новые функциональные возможности, например блокируют неприятную рекламу, включают ночной режим или управляют паролями. В Яндекс.Браузер можно устанавливать расширения, созданные командой браузера, а также расширения из Каталога браузера Opera.
Просмотр списка расширений
Анализ существующих расширений и изучение предпочтений пользователей позволили отобрать для Яндекс.Браузера наиболее популярные, полезные и безопасные расширения.
Также в списке перечислены предустановленные расширения (например, Антишок) и дополнительные функции браузера (например, синхронизация).