' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'')//-->
В этой статье приведены некоторые технические подробности по разработке расширения ChromeIPass • RU. Для лучшего понимания материала рекомендуется предварительно ознакомиться с общим обзором возможностей этого аддона и изучить Руководство пользователя (если вы ещё не сделали этого).
В этой статье:
В дополнение к функционалу оригинального аддона в русском форке сделано следующее:
Ниже приведены некоторые технические подробности по исходному коду и отдельным функциям расширения.
Код использует только чистый 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+.
Язык интерфейса, сообщений, меню, подсказок и описания – только русский (жёстко зашит в коде).
Исходный код НЕ обфусцирован, исключительно с целью удобства при возможных доработках. Кому это критично – удалите комментарии и пропустите через компрессоры…