В этой статье приведены некоторые технические подробности по разработке расширения 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 |