' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'')//-->
Для "продвинутых" пользователей, желающих знать технические подробности расширения Flashless • RU.
В этой статье:
В исходном коде используется только чистый JS (ES5), неподдерживаемые в "старых" браузерах функции отсутствуют.
Скрипты работают в "строгом" режиме – для гарантированного выполнения функций и облегчения отлова ошибок.
Расширение работает полностью автономно, не имеет фонового процесса и занимает память в покое.
Работа аддона основана на CSS‑фильтрации html-тегов <embed>, <object> и <iframe> (принцип работы + пояснение). Кроме объектов Adobe Flash фильтруются также элементы MS Silverlight и видео Adobe Director. Поиск и выбор "под зачистку" осуществляется по типу и классу таких объектов.
В дополнение к фильтрам добавлен скрипт-инжектор, вырезающий из кода страницы все найденные флэш‑элементы (на этапе загрузки страницы, динамические изменения скриптом не отслеживаются).
Расширение существует в виде двух независимых линеек, Flashless Pico и Flashless Nano, первая из которых имеет минимальные требования к версии браузера (17+) и работает только в режиме CSS+JS фильтрации. Второй вариант (Nano) в дополнение к инлайн-фильтрам позволяет заблокировать флэш ещё и на уровне настроек браузера.
В версиях Flashless Nano кроме плагина Adobe Flash опционально блокируется также и веб‑плагин VLC media player (существует только в виде NPAPI‑плагина). В этой линейке при каждом включении аддона (или при рестарте браузера) производится проверка наличия в браузере установленных плагинов, могущих воспроизводить флэш-контент, и их автоматическая блокировка.
Плагин Adobe Flash блокируется безусловно и без запросов (как наиболее известный и "злостный" поставщик флэша)). Если при проверке будет обнаружен ещё и плагин VLC media player, буден выдан однократный запрос на его блокировку. Ответ пользователя в любом случае будет запомнен и может быть изменён только при переустановке расширения (сохраняется в localStorage расширения).
В версиях Flashless Nano для управления блокировкой загрузки флэш-объектов по типу контента (на уровне настроек браузера) применяется API chrome.contentSettings. Управление блокировками по типу контента перекрывает связанную часть настроек браузера (chrome://settings/content), но не ограничивает* пользователя в возможности задания исключений для отдельных сайтов ("белый список").
* Надо отметить, что "вам это не поможет", потому как скрипт‑инжектор и CSS‑фильтр в любом случае "сделают своё чёрное дело" и снесут (и обнулят) флэш даже на самых "белых и пушистых" сайтах.))
Обе линейки Flashless имеют один и тот же ID и могут быть взаимозаменяемы путём установки "поверх". Это сделано во избежание дублирования одних и тех же функций фильтрации, абсолютно идентичных в обоих линейках одной версии.
Аддон не имеет практических ограничений* по версии браузера, используемые API работают в версиях 22+.
* В манифесте ограничение "снизу" установлено только в линейке Flashless Nano, так как оно связано с вызовом функций API управления плагинами в браузере, отсутствующего в более старых версиях. Для других версий работоспособность аддона возможна даже в "раритетах" на 17‑й версии движка…)
Исходный код НЕ обфусцирован, исключительно с целью удобства при возможных доработках и для облегчения читаемости кода при его исследовании.
Если кому‑то это критично – удалите комментарии и пропустите через компрессоры…)