' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'')//-->
В материале даны пояснения по основным концепциям разработки расширения Агрегатор поисковых машин, описаны общие принципы системы выпуска экспериментальных версий (ECR), а также приведены некоторые технические подробности и особенности применения аддона.
В этой статье:
При работе с расширением и, особенно, при выполнении различных настроек, пользователь должен чётко представлять себе смысл и назначение каждой опции или функции. Это позволит избежать отдельных проблем и "непоняток" при эксплуатации "Агрегатора". Для лучшего понимания что, как и зачем "крутить", следует не только читать встроенные подсказки к отдельным опциям, но и уметь самостоятельно разбираться в отдельных вопросах.
Агрегатор предназначен в первую очередь для пользователей, желающих получить в своё распоряжение максимальное число доступных сервисов поиска. При этом у каждого пользователя есть возможность полностью настроить требуемые сервисы под свои конкретные задачи, а также создать "под себя" необходимое множество вариантов поисковых шаблонов, подстраивая их под вполне конкретные частные условия применения.
Тем не менее, при всей объёмности доступных настроек АПМ остаётся простым в применении и нетребовательным к ресурсам приложением. Работать с АПМ можно практически на любом браузере семейства Chromium (минимальная "теоретическая" версия – не ниже 27, рекомендуемая – 31 и новее). Кроме того, АПМ не имеет никаких фоновых процессов и не потребляет ресурсов кроме как на момент вызова его интерфейсной части (окон поиска или настроек).
При выборе установщика для браузеров версий новее 88 рекомендуется (по возможности) использовать пакет формата CRXv3 с манифестом MV2. Это снимает часть браузерных ограничений, накладываемых на расширение в API MV3 – в частности, в MV3‑версиях могут не сохраняться некоторые иконки (независимо от способа добавления, это связано с запретом обработки объектов типа "blob" для MV3‑расширений).
Код использует только чистый JS (ES5), все неподдерживаемые в "старых" браузерах функции заменены на аналоги.
Все скрипты работают в "строгом" режиме – для гарантированного выполнения функций и облегчения отлова ошибок.
Всё управление работой расширения осуществляется через попап‑окно, вызываемое по щелчку на иконке на тулбаре. Интерфейс прост и интуитивно понятен, для всех "кликабельных" элементов добавлены тултипы и подсказки.
Страница настроек всех основных и дополнительных опций и функций, включая управление параметрами поиска и самого АПМ, может быть открыта либо в этом же попапе, либо в отдельной вкладке.
В текущих версиях АПМ в манифесте расширения отдельная страница настроек не указана – исключительно в связи с тем, что гораздо удобнее (и быстрее!) вызвать Настройки "в один клик" прямо со значка на тулбаре.)
Для отрисовки интерфейса попапа и страницы настроек не используются никакие сторонние JS/CSS библиотеки, весь интерфейс работает на чистом HTML с минимально необходимым набором стилей и скриптов. Язык интерфейса, сообщений, подсказок и описания – только русский (жёстко зашит в коде).
Расширение имеет модульную структуру скриптов, загружаемых по необходимости. Выгрузка модулей и очистка занимаемой ими памяти производится автоматически – как только прекращается использование конкретного модуля (например, при закрытии окна ввода поискового запроса). Такой подход снижает общий текущий расход памяти и позволяет достаточно легко добавлять новые возможности и функции в системе "ECR".
Для вызова попапа (или окна настроек вместо него) применяется API chrome.browserAction*. Для выполнения действий на веб‑страницах применяется API chrome.tabs* (опциональное разрешение). Также применяется разрешение activeTab, упрощающее отдельные контекстные действия на текущих страницах.
* Начиная с версии 2025.3.25 / #ECR5 в релизах с манифестом MV3 для вызова попапа применяется API chrome.action. Для выполнения действий на веб‑страницах применяется API chrome.scripting.
Для текущего хранения всех пользовательских настроек используется API chrome.storage, в манифесте АПМ это разрешение отдельно не указывается в силу достаточности* объёма хранимых данных по умолчанию.
* Если не "злоупотреблять" иконками повышенного разрешения и не держать в настройках сотни (ненужных)) поисковых строк, предел хранилища по умолчанию вряд‑ли будет превышен. Во всяком случае, автор лично пока не сталкивался с такой ситуацией, однако, если у вас возникнет подобная проблема – не стесняйтесь о ней сообщить, добавить дополнительную строчку в манифест не проблема… :)
Для обеспечения корректной работы отдельных дополнительных функций аддона с любыми хостами и протоколами в манифесте запрашивается опциональное разрешение "<all_urls>". Для обеспечения работы с локальными файлами пользовательских данных (экспорт/импорт, иконки, стили интерфейса и настройки) указано разрешение "file:///*/*".
При обработке частных стилей оформления интерфейса, заданных пользователем, все CSS‑правила сохраняются как текст, сохранение (экспорт/импорт) пользовательских настроек – в json‑формате.
Аддон не имеет практических ограничений по версии браузера, используемые API работают в версиях CR27+. Текущие версии расширения разрабатываются с учётом совместимости со всеми движками, могут работать на любых Chromium‑браузерах, начиная с версии CR31 и новее.
Исходный код НЕ обфусцирован, исключительно для удобства при возможных доработках и для облегчения читаемости кода при его исследовании. Если кому‑то это критично* – удалите комментарии и пропустите через компрессоры.)
* Начиная с версии 2025.3.25 во всех установочных пакетах содержится только сжатый авторский код.
При разработке применяется специальная система выпуска версий – ECR или "экспериментальная концепт‑версия". Термин введён автором и применяется не только для "Агрегатора", но и для других расширений.
ECR – это система развития дополнительного функционала, позволяющая енд‑юзеру выбрать именно ту версию, которая подходит ему больше всего. При этом каждое из таких "ответвлений" является полноценным продуктом, обеспечивающим решение основной задачи (ввод и выполнение поисковых запросов).
ECR – это экспериментальная версия расширения, имеющая одну или несколько "нестандартных фишек", направленных на повышение удобства использования и/или использующих "нестандартный" способ решения отдельных типовых задач.
ECR отличается от "стабильной" версии только способом реализации функций, работоспособность кода в целом гарантируется точно также, как и в "обычных" версиях – в ECR не применяются нестабильные или "новомодные" фишки, которые могут послужить причиной возникновения ошибок или иных проблем у пользователя.
Проще говоря, ECR – это не отладочный "дев‑билд", это именно отработка концепций иных способов решения каких‑либо задач в браузере, поэтому ECR‑версии могут использоваться для повседневной работы точно также, как и любые стабильные версии.
Все ECR‑версии также выпускаются под одним ID, что позволяет сохранять преемственность настроек при переходе от одной к другой (с учётом прямой совместимости отдельных настроек и применяемых функций).