Для "продвинутых" пользователей, желающих знать технические подробности расширения Imageless • RU. В этой статье:
Важные примечания по особенностям работы в разных версиях браузеровВесь заявленный функционал доступен полностью только в версиях браузеров 49+. В старых версиях (25-48) нет дублирования функций контекстного меню страницы в меню кнопки тулбара. В старых версиях браузеров (25-48) к настройкам расширения доступа* нет. * Продвинутые юзеры могут (на свой страх и риск) изменять настройки даже в самых старых версиях – путём правки вручную соответствующих ключей в localStorage аддона…) В старых версиях (25-48) настройки жёстко ограничены следующими:
Использование горячих клавиш ограничено – работают только в версиях 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 |