JS
November 27, 2020

Расширение для браузера на js. Notepad

Начнём со структуры файлов. Т.к. я только начинаю в этом всём разбираться то всё лежит в одной папке:

└background.js
└icon.png
└index.html
└manifest.json
└style.css

Я не буду разбирать структуру html и css. Всё что необходимо знать что в файле html есть <textarea cols="82" rows="20" id='GetText' autofocus></textarea> с которой и будет происходить взаимодействие на стороне js скрипта.

Начнём разбор с файла manifest.json

{
  "manifest_version": 2,
  "name": "NOTEPAD",
  "description": "Notepad, creator: t.me/CodingCommunity",
  "version": "0.0.1",
  "icons": {"128": "icon.png"},
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "index.html"
  }
}

Он у нас получился совсем маленьким, т.к. мы не используем ничего что могли бы, нам не нужны разрешения работы с вкладками и т.п. По названиям полей можно и так догадаться что они означают. Хочу лишь отметить что default_icon это иконка которая отображается среди других расширений в браузере.

Перейдем к js коду. У нас будет всего одна функция которая будет отвечать за сохранение и загрузку данных из локального хранилища. При загрузки страницы мы достаём из локального хранилища данные которые там имеются по ключу "text" и заносим их в html файл в тег textarea, а если быть точнее то в его значение. Далее мы назначаем слушателя onkeyup который реагирует на отпущенную клавишу, после чего заносим в локальное хранилище данные из textarea. Вот что про onkeyup пишет гугл:

keyup() привязывает JavaScript обработчик событий "keyup" (нажатая клавиша была отпущена), или запускает это событие на выбранный элемент. Событие "keyup" посылается элементу в тот момент, когда пользователь отпустит нажатую клавишу на клавиатуре.

window.onload = () => {
  let getTextFromTextArea = document.getElementById('GetText');
  getTextFromTextArea.value = localStorage.getItem('text')
  getTextFromTextArea.onkeyup = () => {
    localStorage.setItem('text', getTextFromTextArea.value);
  }
}

Да, это полный листинг. Его мало но расширение невероятно полезное. Можете не смотреть css, там я просто позаимствовал код для текста сверху. В общем, вот как работает расширение:

Расширение было протестировано в Google Chrome (Версия 86.0.4240.198) и Opera (Версия:72.0.3815.378)

Прошу меня простить за мой ужасный код, вы всегда можете модифицировать мой код и использовать как хотите, я не несу за это ответственности.

Телеграм канал: https://t.me/CodingCommunity