Как создать простое расширение Chrome
Почему расширения Chrome важны

Chrome — один из самых популярных браузеров, и он предлагает крупнейшую аудиторию для расширений. Если вы знакомы с HTML, CSS и JavaScript, вы уже почти готовы сделать своё первое расширение. В этой статье мы создадим самое простое расширение — иконка в тулбаре, по клику которой откроется небольшое всплывающее окно (popup).
Важно: эта инструкция показывает минимальную структуру и базовый «Hello World». Для продвинутых сценариев и рекомендаций по безопасности смотрите официальную документацию Chrome.
Что понадобится
- Базовые знания HTML, CSS и JavaScript.
- Текстовый редактор (VS Code, Sublime и т. п.).
- Папка проекта для файлов расширения.
- Иконка формата PNG (например, 128×128 или 16×16 для тулбара).
Структура проекта
Создайте папку с именем вашего расширения, например Hello World. В ней будут как минимум три файла:
- icon.png — иконка расширения.
- manifest.json — манифест расширения, описывающий Chrome, что делать.
- popup.html — содержимое всплывающего окна.

manifest.json — «паспорт» расширения
Манифест описывает, какие файлы загружать, какие разрешения нужны и как взаимодействовать с пользователем. Ниже — минимальный пример манифеста на основе Manifest V2 (как в исходной статье). Обратите внимание на раздел «permissions» и «browser_action», которые управляют поведением в тулбаре.
{
"manifest_version": 2,
"name": "Hello World!",
"description": "My first Chrome extension.",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"activeTab"
]
}Ключевые поля:
- manifest_version — версия формата манифеста (в примере указана 2).
- name — название, отображаемое в магазине и в chrome://extensions.
- description — краткое описание.
- version — семантическая версия расширения.
- browser_action — задаёт иконку в тулбаре и поведение по клику.
- default_icon — путь к иконке внутри папки расширения.
- default_popup — HTML-файл, который откроется при клике.
- permissions — запрашиваемые права; activeTab позволяет временно получить доступ к активной вкладке.
Подсказка: внимательно подходите к списку разрешений — чем меньше разрешений, тем выше вероятность доверия со стороны пользователей и меньше вероятность отказа при публикации.
popup.html — содержимое всплывающего окна
Ниже — простой HTML для popup. Обратите внимание: popup работает как обычная страница, но с ограничениями безопасности контекста расширения.
Hello World
Hello World!
Если нужно подключить дополнительные скрипты или стили, их обычно декларируют в manifest.json как content_scripts или подключают внутри popup.html как обычные теги / (с учётом политик безопасности — Content Security Policy).
Как загрузить расширение в Chrome
- Откройте chrome://extensions.
- Включите «Developer mode» (Режим разработчика) в правом верхнем углу.

- Нажмите кнопку “Load unpacked extension…” и выберите папку с вашим расширением.

- После загрузки вы увидите иконку в тулбаре.

- Кликните на иконку — откроется ваш popup.

Тестирование и критерии приёмки
Критерии приёмки для минимального расширения:
- Расширение загружается в режиме разработчика без ошибок.
- Иконка отображается в тулбаре.
- Клик по иконке открывает popup.html и отображает ожидаемый контент.
- В журнале расширений (chrome://extensions) отсутствуют фатальные ошибки.
Минимальные тест-кейсы:
- Убедиться, что manifest.json корректен (валидный JSON, нет опечаток в ключах).
- Открыть popup и проверить верстку на разных масштабах (100%, 125%, 150%).
- Проверить, что запрошенное разрешение activeTab не вызывает лишних предупреждений.
Развёрнутые рекомендации и добавленная ценность
Короткая методология: как итеративно развивать расширение
- Начните с минимальной рабочей версии (MVP). Проверьте загрузку и базовый сценарий.
- Добавляйте фичи через content_scripts или background scripts, документируя изменения в manifest.json.
- Проводите локальное тестирование и аудит безопасности (CSP, минимизация разрешений).
- Подготовьте пакеты и метаданные для публикации в Chrome Web Store.
Чек-листы по ролям
Разработчик:
- Написать manifest.json и popup.html.
- Проверить валидность JSON и пути к файлам.
- Добавить логи и сообщения об ошибках.
Дизайнер:
- Подготовить иконки в нескольких размерах (16, 48, 128).
- Сверстать popup для адаптивности.
Ревьювер/QA:
- Проверить сценарии взаимодействия.
- Выполнить тесты на приватность и ограничение разрешений.
Публикация:
- Подготовить описание, скриншоты и политику конфиденциальности.
- Создать учётную запись разработчика и оплатить сбор (если требуется).
Шаблоны и сниппеты (cheat sheet)
Минимальный manifest.json (шаблон уже выше). Популярные поля, которые часто добавляют:
- icons: { “16”: “icon16.png”, “128”: “icon128.png” }
- background: { “scripts”: [“background.js”] }
- content_scripts: [ { “matches”: [“:///*”], “js”: [“content.js”] } ]
Пример подключения содержимого страницы через content_scripts:
{
"manifest_version": 2,
"name": "Example",
"version": "1.0",
"content_scripts": [
{
"matches": ["https://*/*", "http://*/*"],
"js": ["content.js"]
}
]
}Короткий глоссарий (1 строка на термин)
- manifest.json — главный файл конфигурации расширения.
- popup — всплывающее окно, связанное с иконкой браузера.
- content script — скрипт, который внедряется в веб-страницу.
- background script — фоновый процесс расширения.
Совместимость и миграция (Manifest V2 vs V3)
Важно знать: Chrome эволюционирует, и Manifest V3 уже внедрён в экосистему. Manifest V2 всё ещё встречается в старых примерах, но при разработке новых расширений подумайте о V3:
- V3 вводит сервис-воркеры вместо фоновых страниц (background service workers).
- Могут измениться API для веб-запросов и блокировки запросов.
- Планируйте миграцию: проверяйте официальную документацию Google и список несовместимых API.
Решение: если вы создаёте новое расширение — ориентируйтесь на текущие требования Chrome Web Store; для сложных сценариев тестируйте V3 локально.
Примеры ошибок и когда подход не работает
- Проблема: popup не открывается — проверьте путь в
default_popupи отсутствие синтаксических ошибок в HTML. - Проблема: расширение требует слишком много разрешений — уменьшите список permissions, используйте host permissions по необходимости.
- Ограничения CSP могут блокировать inline-скрипты — используйте внешние файлы и корректную политику.
План публикации (короткий SOP)
- Проверить работоспособность и выполнить QA.
- Подготовить иконки, скриншоты и описание.
- Зарегистрировать аккаунт разработчика Chrome (если ещё нет).
- Загрузить пакет расширения в Dev Dashboard, заполнить метаданные.
- Дождаться проверки и публикации.
Критерии проверки безопасности
- Минимизируйте список permissions.
- Не храните чувствительные данные в локальном хранилище без шифрования.
- Убедитесь, что контент-скрипты не подвергают сайт XSS-рискам.
Пример простого сценария расширения с JavaScript
Если вы хотите, чтобы при нажатии на кнопку в popup происходило действие в активной вкладке, можно реализовать это через message passing или через chrome.tabs.executeScript (в старых версиях). Пример для простоты — отправка сообщения из popup в background и выполнение в контент-скрипте.
(Реализация зависит от выбранной архитектуры: background page vs service worker для V3).
Ресурсы и ссылки
- Официальный гайд по расширениям Chrome — Chrome Developer Extension Guide.
- Документация по manifest.json и permissions — на сайте разработчиков Chrome.
Заключение и дальнейшие шаги
Вы создали минимальную рабочую версию расширения: написали manifest.json, popup.html и загрузили расширение в Chrome. Дальше можно:
- Добавлять фоновые задачи (background scripts/service workers).
- Внедрять content scripts для взаимодействия с веб-страницами.
- Подготовить версию для публикации в Chrome Web Store.
Важно: при подготовке к релизу уделите внимание приватности пользователей и минимизации запрашиваемых прав.
Важное
Перед публикацией внимательно прочитайте требования Chrome Web Store по безопасности и политике данных.
Краткое резюме:
- Структура: папка с manifest.json, popup.html и иконками.
- Загрузить: chrome://extensions → Developer mode → Load unpacked extension…
- Развивать: переход на Manifest V3 при необходимости, минимизировать разрешения, тестировать взаимодействия.
Похожие материалы
Cortana: как перевести ПК в спящий режим
Live Captions на iPhone, iPad и Mac — включение и настройка
TEXTJOIN в Excel — примеры и подсказки
Загрузка Raspberry Pi 4 с внешнего SSD
Выйти из учётной записи другого пользователя в Windows