Imageless • RU : Что "под капотом"
Опубликовано: Бармалей · 22.11.2017 · 00:02 ••• Обновление: 12.01.2021 · 17:53 0

Для "продвинутых" пользователей, желающих знать технические подробности расширения Imageless • RU.

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


Важные примечания по особенностям работы в разных версиях браузеров

Весь заявленный функционал доступен полностью только в версиях браузеров 49+.

В старых версиях (25-48) нет дублирования функций контекстного меню страницы в меню кнопки тулбара.
Ограничение связано с отсутствием в этих версиях поддержки части API контекстного меню.

В старых версиях браузеров (25-48) к настройкам расширения доступа* нет.
Это ограничение также связано с отсутствием в этих версиях поддержки части API контекстного меню.

* Продвинутые юзеры могут (на свой страх и риск) изменять настройки даже в самых старых версиях – путём правки вручную соответствующих ключей в localStorage аддона…)

В старых версиях (25-48) настройки жёстко ограничены следующими:

  • блокировка возможна только методом ограничения контента (contentSettings);
  • для снижения трафика отключена перезагрузка текущей страницы при переключении блокировки;
  • для заблокированных изображений "заглушка" не показывается (будет просто пустое место).

Использование горячих клавиш ограничено – работают только в версиях 25+ (в манифесте не задано).

Базовая версия Imageless (2017.11.22) может использоваться в любых браузерах до версии 72. В более свежих версиях следует использовать "подправленный" билд (2020.3.12), в котором устранена проблема работы с хоткеями (проявляется только в 72+). Других отличий между этими версиями нет.


Технические детали: применяемые API и примечания по исходному коду

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

Скрипт работает в "строгом" режиме – для гарантированного выполнения функций и облегчения отлова ошибок.

Аддон работает постоянно, выгрузки из памяти нет. Это связано с особенностью работы основного API блокировки, используемого в аддоне – chrome.webRequest и его "блокирующей" части webRequestBlocking.

Эти API отвечают непосредственно за проверку http-запросов и блокировку загрузки изображений по mime-типу [image] и задействуются при выборе соответствующего метода блокировки – будут работать только при включении настройки "Блокировка WebRequest". Для обеспечения корректной работы аддона с любыми протоколами в манифесте запрашивается разрешение [ "<all_urls>" ].

Для управления блокировкой загрузки изображений по типу контента (на уровне настроек браузера) применяется API chrome.contentSettings. Управление блокировками по типу контента перекрывает соответствующую часть настроек браузера (chrome://settings/content), но не ограничивает пользователя в возможности задания исключений для отдельных сайтов ("белый список").

Для выполнения инжекции микро-скрипта переключения вывода изображений и контекстных действий на веб-страницах задействуются два API – chrome.tabs и chrome.contextMenus. Также применяется разрешение activeTab, упрощающее отдельные контекстные действия на текущих страницах.

API контекстного меню также применяется во всех браузерах версий 49+ для доступа к настройкам расширения при щелчке ПКМ по значку на тулбаре. Ввиду отсутствия поддержки части типов этого API в более старых версиях (25-48) контекстное меню для кнопки на тулбаре отсутствует, настройки заданы жёстко и не меняются. Это сделано в целях упрощения интерфейса и в силу достаточно редкой потребности менять "дефольтные" параметры в старых браузерах.

Для переключения индикатора состояния режима блокировки (бэджик, ON/OFF) применяется API chrome.browserAction.

Для вызова функций по горячим клавишам используется API chrome.commands.

Для текущего хранения настроек используется API chrome.storage.

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

* В манифесте ограничение "снизу" не установлено, оно связано только с вызовом функций по хоткеям (этот API не работает в более старых версиях). В принципе, это особо не ограничивает пользователя – если не задействовать хоткеи и управлять аддоном только через контекстное меню и кнопку тулбара…

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

Если кому-то это критично – удалите комментарии и пропустите через компрессоры…)


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



Блокировка контента Бармалей
Бармалей 22.11.2017 12.01.2021 278 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:25+
Протестировано в:SRWare Iron 29/31/49 + 360 Extreme Explorer 11/12 (CR-69/78)
Технологии и API:Чистый JS (ES5), API: storage, tabs, activeTab, webRequest, contentSettings, contextMenus

Поделиться

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