
Создание простого расширения Chrome от начала до конца
Создание расширения для Chrome не только просто, но и является отличным способом применить на практике основные принципы веб-разработки! В этой статье я расскажу вам, как создать простое расширение для напоминаний о позе для Chrome.
Все, что вам нужно, это базовые знания HTML, CSS и JS, и с этим все готово!
Что такое расширение Chrome?
Проще говоря, расширения Chrome — это дополнения к вашему браузеру Chrome. Эти программы улучшают работу с Chrome и написаны на HTML, CSS и Javascript. Вы можете найти и установить их через Интернет-магазин Chrome. Как видите, они могут быть чрезвычайно мощными, но сегодня мы будем придерживаться основ.😊
Что мы создаем?
Как и многие, у меня есть склонность горбиться, когда я работаю за своим столом в течение долгих часов, вызывая сильную боль в шее и спине. Вот почему мы собираемся создать расширение для Chrome, которое время от времени будет напоминать нам (посредством уведомлений) о необходимости сидеть прямо.
Готовый? Давайте начнем.
Начало работы в режиме разработки
Начнем с настройки среды разработки.
ШАГ 1 — подготовка основы
Создать новый каталог
mkdir simple_chrome_extension
Затем создайте файл с именем manifest.json.
touch manifest.json
👉 Что такое manifest.json?Каждому расширению Chrome требуется этот файл манифеста в формате JSON. По сути, это файл метаданных, который содержит обязательную и необязательную информацию о вашем расширении. (название расширения, описание, версия, разрешения) Посмотреть полный список здесь
Теперь откройте ваш любимый редактор кода. Сейчас мы заполним файл manifest.json следующим:
{
"manifest_version": 2,
"name": "Simple chrome extension",
"version": "0.1",
"description": "Simple posture reminder :)",
"icons": {
"16": "icon/16.png",
"32": "icon/32.png",
"192": "icon/192.png"
},
"permissions": [],
"browser_action": {
"default_title": "Posture popup",
"default_popup": "popup.html",
"default_icon": {
"16": "icon/16.png",
"32": "icon/32.png",
"192": "icon/192.png"
}
}
}
👉 Что такое browser_action? Расширение Chrome может использовать либо действия страницы , либо действия браузера (не оба!). Действия со страницей — это действия, выполняемые на текущей странице, в то время как действия браузера не относятся к странице и применяются ко всему браузеру. Это означает, что действия в браузере могут иметь всплывающую подсказку, значок или всплывающее окно. Вот чего мы хотим!
👉 Почему так много значков?16, 48 и 128 — это значки разного размера (16 x 16 пикселей и т. д.), предоставленные Chrome. Chrome выберет лучший значок для отображения.
Теперь давайте создадим новый файл с именем popup.html в корневом каталоге.
<html>
<body>
<header>
Simple chrome extension
</header>
</body>
</html>
И, наконец, давайте добавим те изображения, которые мы упомянули в manifest.json, в папку icon. Вы можете использовать любую иконку на ваш выбор, но вот несколько готовых, которые я собрал, которые вы можете скачать здесь
К настоящему времени ваш каталог должен выглядеть так:
| simple_chrome_extension
| icon
| 16.png
| 32.png
| 192.png
| manifest.json
| popup.html
ШАГ 2. Запуск расширения
Отлично, теперь мы готовы запустить расширение. Перейдите в chrome://extensions/, переключите Режим разработчика в правом верхнем углу и нажмите Загрузить распакованноев верхнем левом углу. Импортируйте папку simple_chrome_extension.
На этом этапе вы должны увидеть расширение Chrome на странице расширения и на панели инструментов!


Теперь любые изменения, которые вы вносите в свою папку, будут напрямую отображаться (в большинстве случаев, я немного объясню) в вашем расширении для разработки.
Написание кода
ШАГ 3. Установка интервала времени между напоминаниями
Здорово! Теперь давайте добавим немного функциональности.
Во-первых, давайте добавим этот фрагмент кода в popup.html.
<html>
<body>
<form>
<span class="time-text" id="time-text"> Remind me every
<input type="number" name="time" id="time" value="0.1" max="59" maxlength="2" />minutes
</span>
<div>
<input type="submit" value="Update" id="submit" />
</div>
</form>
</body>
</html>
👉 Почему для входных данных задано значение 0,1?Это сделано для целей тестирования, чтобы мы могли сразу увидеть всплывающее уведомление, а не ждать x минут!
Затем создайте новую папку в корневом каталоге с именем js и добавьте файл с именем popup.js. Здесь мы напишем логику, которая будет действовать в зависимости от того, что пользователь ввел во всплывающем окне.
Но прежде чем мы это сделаем, давайте воспользуемся случаем и добавим jQuery. Загрузите jQuery здесь, добавьте файл в папку js и переименуйте файл в jquery.js.
Теперь последнее, прежде чем мы добавим код — давайте импортируем наши файлы скриптов в popup.html следующим образом:
<html>
<body>
<form>
<span class="time-text" id="time-text"> Remind me every
<input type="number" name="time" id="time" value="0.1" max="59" maxlength="2" />minutes
</span>
<div>
<input type="submit" value="Update" id="submit" />
</div>
</form>
</body>
<script src="/js/jquery.js"></script>
<script src="/js/popup.js"></script>
</html>
Теперь вернемся к popup.js. Давайте добавим следующий код
'use strict';
function setAlarm() {
let minutes = parseFloat($("#time").val())
chrome.alarms.create('reminderAlarm', {
periodInMinutes: minutes
})
window.close()
}
$("#submit").click(setAlarm)
Здесь мы добавляем событие к кнопке отправить таким образом, чтобы при ее нажатии мы настраивали частоту уведомлений на основе значения, которое пользователь установил в поле ввода.
👉 Что такое chrome.alarms?Chrome.alarms API используется здесь для планирования периодического запуска кода или в указанное время в будущем. Здесь мы сообщаем Chrome запускать reminderAlarm каждые минуты с промежутком времени (через поле periodInMinutes). Можете ли вы догадаться, какое у нас начальное значение? является? Подсказка: это в popup.html
ШАГ 4. Добавление фонового сценария
Теперь, когда у нас есть будильник, срабатывающий с заданной частотой, нам нужно создать фактическое всплывающее окно с уведомлением в Chrome, когда срабатывает будильник. Это будет сделано в новом файле. Создайте файл с именем background.js в папке js и добавьте следующий код:
'use strict';
chrome.alarms.onAlarm.addListener(function() {
chrome.notifications.create({
type: 'basic',
iconUrl: 'icon/32.png',
title: 'Keep your back straight!',
message: 'A friendly reminder to sit up straight.',
priority: 0});
});
Уведомления будут создаваться с помощью API chrome.notifications. Вы можете прочитать больше об этом здесь". Не стесняйтесь персонализировать заголовок и сообщение.
👉 Зачем создавать для этого отдельный файл background.js?На самом деле это фоновый скрипт, который мы собираемся запустить в нашем расширении Chrome. Фоновый скрипт может реагировать на события браузера и выполнять определенные действия. Фоновая страница загружается, когда она нужна, и выгружается, когда простаивает. В нашем случае фоновый скрипт загрузится при первой установке расширения, поэтому убедитесь, что вы удалили и перезагрузили расширение Chrome, когда вносите изменения в этот файл!
Наконец, давайте импортируем фоновый скрипт в наш файл manifest.json:
{
"manifest_version": 2,
"name": "Simple chrome extension",
"version": "0.1",
"description": "Simple posture reminder :)",
"icons": {
"16": "icon/16.png",
"32": "icon/32.png",
"192": "icon/192.png"
},
"permissions": [
"notifications",
"alarms"
],
"background": {
"scripts": [
"/js/background.js"
],
"persistent": false
},
"browser_action": {
"default_title": "Posture popup",
"default_popup": "popup.html",
"default_icon": {
"16": "icon/16.png",
"32": "icon/32.png",
"192": "icon/192.png"
}
}
}
👉 Что такое разрешения?Для большинства, если не для всех chrome.* API, вы должны объявить их назначение в поле разрешения. Это потребуется при публикации расширения.
На этом этапе ваш каталог должен выглядеть так:
| simple_chrome_extension
| icon
| 16.png
| 32.png
| 192.png
| js
| background.js
| jquery.js
| popup.js
| manifest.json
| popup.html
ШАГ 5. Проверка того, что все работает нормально
Вы сделали это до сих пор! Теперь проверим нашу работу. Повторите шаги ШАГА 2, чтобы переустановить расширение (поскольку мы внесли изменения в фоновый сценарий). После установки, если вы нажмете на расширение Chrome на панели инструментов и нажмете Обновить, через несколько секунд вы увидите всплывающее уведомление, подобное этому.

Великолепный! Все работает. Просто убедитесь, что вы изменили начальное значение времени ввода на что-то вроде этого, чтобы не получать спам с уведомлениями:
<!-- popup.html -->
<html>
<body>
<form>
<span class="time-text" id="time-text"> Remind me every
<input type="number" name="time" id="time" value="5" max="59" maxlength="2" />minutes
</span>
<div>
<input type="submit" value="Update" id="submit" />
</div>
</form>
</body>
<script src="/js/jquery.js"></script>
<script src="/js/popup.js"></script>
</html>
🎉 И всё! Вы сделали это, поздравляю! 🎉
Куда пойти отсюда
Теперь, когда вы настроили каркас, вы можете двигаться дальше с гораздо большей легкостью. Вот список предложений:
- Добавьте свой собственный стиль во всплывающее окно с помощью CSS
- Добавьте в расширение дополнительные функции, такие как ВКЛ/ВЫКЛ, звук и т. д.
- Опубликуйте свое расширение! Всю необходимую информацию вы можете найти здесь
Спасибо, что выдержали до конца, нажмите 👏, если вам понравилось. Я надеюсь, что это руководство было полезным. Используя этот каркас, я добавил некоторые дополнительные функции и опубликовал расширение для Chrome. Не стесняйтесь проверить это и дать мне звезду здесь:
https://github.com/meko-deng/sit-better-extension
Вклад более чем приветствуется!
До следующего раза — ура! 🥂