ChromeIPass • RU : Что "под капотом"
Опубликовано: Бармалей · 25.11.2016 · 00:03 ••• Обновление: 23.01.2021 · 10:44 0

В этой статье приведены некоторые технические подробности по разработке расширения ChromeIPass • RU.
Для лучшего понимания материала рекомендуется предварительно ознакомиться с общим обзором возможностей этого аддона и изучить Руководство пользователя (если вы ещё не сделали этого).

В этой статье:


Основные отличия русской версии

В дополнение к функционалу оригинального аддона в русском форке сделано следующее:

  • Полноценный русский перевод всего интерфейса, включая текст подсказок и сообщений.
  • Авторизованный перевод "Руководства пользователя" на русский язык (отдельный файл Справки).

Технические детали

Ниже приведены некоторые технические подробности по исходному коду и отдельным функциям расширения.

Исходный код, интерфейс и API

Код использует только чистый JS (ES5), все неподдерживаемые в "старых" браузерах функции заменены на аналоги.

Для упрощения отрисовки интерфейса и попап-окон используются JQuery-based библиотеки.

Интерфейс управления прост и интуитивно понятен, для "кликабельных" элементов имеются подсказки.

Управление работой расширения и управление данными текущей вкладки доступно через попап-окно:

Для полей ввода управление также осуществляется через контекстное меню:

Блок настроек расширения, а также списки подключённых вами баз данных и правила для отдельных сайтов, отображаются на отдельной странице настроек (заданной в манифесте):

Все настройки автономны и сохраняются только в локальном хранилище самого аддона, синхронизации нет.

Для обработки полей ввода и, в частности, для автозаполнения учётных данных, используется автоматически загружаемый скрипт‑инжектор, обеспечивающий взаимодействие фонового процесса расширения с веб‑страницами. Скрипт отрабатывает на всех сайтах после окончания загрузки страницы (выполняется однократно).

Для вызова попапа при щелчке по кнопке на тулбаре применяется API chrome.browserAction. Для работы с данными через контекстное меню страницы задействуются API chrome.contextMenus.

Расширение имеет невыгружаемый фоновый процесс – это обусловлено самим принципом работы одного из API, используемых в аддоне – chrome.webRequest и его "блокирующей" части webRequestBlocking. Этот API отвечает за проверку http‑запросов и их обработку в соответствии с заданными вами правилами и настройками, независимо от того, открыто окно панели управления или нет.

Для работы со вкладками применяется стандартный API chrome.tabs с соответственным разрешением в манифесте права доступа [ "tabs" ].

Для хранения настроек и параметров аддона задействован API chrome.storage. Разрешение в манифесте права доступа к локальному хранилищу не указано, для хранения настроек расширению достаточно максимально допустимого лимита по умолчанию (5Mb).

Для помещения в буфер обмена данных для оперирования учётными записями запрашивается разрешение [ "clipboardWrite" ]. В частности, этот API используется при работе с генератором паролей KeePass.

Для обеспечения соединения аддона с локальными портами KeePassHTTP в манифесте запрашиваются разрешения [ "http://localhost/" , "http://localhost:19455/" ]. Второе разрешение указано для работы с портом по умолчанию (может быть изменён в настройках KeePass и расширения).

Для обеспечения корректной работы аддона с любыми веб-сайтами в манифесте запрашиваются разрешения [ "http://*/*" , "https://*/*" ].

Дополнительные примечания по коду

Практических ограничений по версии браузера не имеется, используемые API работают в версиях 29+.

Язык интерфейса, сообщений, меню, подсказок и описания – только русский (жёстко зашит в коде).

Исходный код НЕ обфусцирован, исключительно с целью удобства при возможных доработках.
Кому это критично – удалите комментарии и пропустите через компрессоры…


Ресурсы и ссылки по разработке ChromeIPass • RU



Управление данными Бармалей
Бармалей 25.11.2016 23.01.2021 221 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:29+
Протестировано в:SRWare Iron 31/49 + 360 Extreme Explorer 11/12/13 (CR69/78/86)
Технологии и API:Чистый JavaScript (ES5). API: contextMenus, clipboardWrite, tabs, webRequest, browserAction

Поделиться

Всего комментариев: 0
close