Создание простого расширения 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
Вклад более чем приветствуется!
До следующего раза — ура! 🥂