Быстрый старт: как за 10 минут создать расширение для любого браузера и изменить любой сайт!

Icons of popular open-source browser extensions displayed as puzzle pieces above the logos of Safari, Chrome, and Firefox.

Создавать надстройки, которые работают во всех популярных браузерах, теперь проще простого — всё благодаря стандарту WebExtension и привычным веб-технологиям. Один формат — и расширение будет совместимо почти с любым браузером, больше не нужно переписывать код для каждой платформы.

Посмотрите, как легко написать своё первое расширение, чтобы “прокачать” внешний вид и работу любых сайтов под себя!

Что такое WebExtensions?

WebExtensions — это расширения для браузеров, которые запускаются в современных браузерах и расширяют их возможности с помощью web API. Вы пишете их на знакомых HTML, CSS и JavaScript — а распространяются они как открытый код.

Расширения для браузеров существуют почти 30 лет, но раньше под каждый браузер приходилось делать отдельную версию: расширение для Chrome не работало в Firefox и наоборот. Сейчас, когда большинство браузеров перешли на Chromium и появился стандарт, эти сложности в прошлом. С 2021 года WebExtensions — это единые правила для всех: теперь достаточно один раз сделать расширение, чтобы оно заработало где угодно.

Дальше я покажу, как создать современное расширение, которое запускается в любом популярном браузере. Всё проще, чем кажется!

WebExtensions работают в разных браузерах, но для разработки рекомендую выбрать Firefox — тестировать расширения здесь удобнее всего. Для Safari потребуется платная учётная запись разработчика.

Как создать manifest-файл для расширения

Любое расширение начинается с manifest-файла — он описывает его основную структуру. Вот как он выглядит:

Manifest — это обычный JSON-файл. Редактировать его можно в любом удобном редакторе или прямо в онлайн-инструменте.

Достаточно указать три главных параметра: name, version и manifest_version. Название и версию пишите любые, но номер версии — только из 1–4 чисел через точки, например “0” или “0.0.1”, иначе Chrome не пропустит файл.

С версией manifest есть нюанс: если другие браузеры поддерживают 1 и 2 версию, то Chrome работает только с третьей (manifest_version: 3). Это уменьшает некоторые возможности, но если ориентируетесь на Chrome — сразу выбирайте версию 3.

Помимо обязательных параметров, добавьте полезные поля: author, description и icons пригодятся для публикации в магазине расширений. commands позволяют назначить горячие клавиши.

Один из самых крутых параметров — content_scripts: он позволяет сразу внедрять ваши CSS и JavaScript на страницы сайтов.

В каждом блоке content_scripts обязательны ключи matches (тут указываете адреса сайтов, где работает расширение) и js/css (подключаете нужные скрипты и стили).

Пишем код расширения

В самом простом примере я соберу свой аналог Tampermonkey — расширения для управления внешним видом сайтов. Например, Tampermonkey может скрыть надоедливую ленту “Лучшие” на Reddit.

Имея manifest и немного JavaScript, вы легко соберёте своего “монки”. Для примера я покажу настройку внешнего вида Википедии — но вы сможете изменить любой сайт на ваш вкус.

Для начала добавлю несколько строчек CSS. Мне мешает блок “требуются дополнительные источники” — для чтения он только отвлекает. Скрываю этот элемент по классу с помощью display: none:

Хотите убрать баннер с просьбой о пожертвованиях? Тоже можно скрыть аналогично:

Яркие сноски тоже раздражают — пусть будут незаметнее: меняю им цвет на полупрозрачный:

Цвет — как в оригинале, только на 50% прозрачнее. Теперь сноски больше не отвлекают от текста.

Пойду дальше: хочется одним нажатием скрывать/показывать элементы, а потом возвращать всё на место. Для этого понадобится чуть-чуть JavaScript!

Я написал короткую функцию: при нажатии нужной клавиши она находит элементы по селектору и скрывает или показывает их, меняя только свойство display — всё работает мгновенно, без перезагрузки страницы.

Установка и запуск расширения

Код готов — пора опробовать расширение в деле!

В Firefox откройте about:debugging, выберите “This Firefox”, нажмите “Load Temporary Add-on” и укажите любой файл расширения (manifest или скрипт).

Firefox's extension page with a temporary extension loaded.

В Chrome заходите на chrome://extensions/, включайте режим разработчика (правый верхний угол), потом жмите “Загрузить распакованное расширение” и выберите папку с файлами расширения.

Chrome's extension page with an unpacked extension loaded.

Теперь расширение работает на всех страницах Википедии! До включения оно выглядело вот так:

A wikipedia page shows a note about additional citations.

После включения расширения — надоедливых объявлений больше нет, а сноски стали едва заметными:

A wikipedia page without the note about additional citations.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!

Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в:

Алекс Бежбакин
Оцените автора
Добавить комментарий