Download + Actions • CR.RU : Что "под капотом"

Бармалей 05.05.2014 13.02.2021 3080.0

В материале описаны отличия от аналогов, условия и особенности работы расширения Download + Actions • CR.RU, указаны требования к клиентскому браузеру и пути решения возможных проблем, приведены некоторые технические подробности по разработке.

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


Особенности и отличия русского форка

В отличие от оригинального расширения "Download + Actions • CR.RU" имеет следующие особенности:

  • Все скрипты полностью "переточены" под Chromium-браузеры (API и внутренние команды).
  • В манифесте установлено ограничение по минимальной требуемой версии браузера 30+.

    Связано с функциями управления всплывающей панелью загрузки ("лопатой"), отсутствует в универсальной Lite-версии.

  • Отключён вывод алерта при включении экспериментальных опций (например, интеграция с торрентами).
  • Добавлена опция проверки имени файла на дубликат при загрузке (отключение автоименования).
  • Добавлен режим просмотра временных файлов "скачал/открыл/удалил" и опция удаление по тайм-ауту.
  • Добавлена опция отключения горячей клавиши вызова папки загрузок в Проводнике.
  • Добавлены функции и кнопки сброса параметров к значениям по умолчанию и установки "заводских настроек".
  • Добавлена проверка установки или обновления аддона с автовызовом страницы настроек в этих случаях.
  • Добавлен автоматический сброс с установкой дефольтных настроек браузера при первом запуске.
  • Добавлена подробная Справка по режимам работы (встроенная, контекстная и всплывающие подсказки).
  • Контекстная Справка по торрентам и другим элементам выводится по нажатию отдельных экранных кнопок.
  • Добавлен выход из экранной Справки по нажатию клавиши <ESC>, (кнопка-"крестик" также имеется).
  • Осовременено оформление страницы настроек (CSS), кнопок и прочих "красивостей".
  • В скриптах доработана и оптимизирована часть функций.

Требования к клиентскому браузеру

Для полноценной работы расширения требуется версия браузера не ниже 30.

Это требование обусловлено использованием части функций API управления загрузками, поддержка которых в более старых* версиях браузеров отсутствует. Такая поддержка гарантированно доступна во всех браузерах на движке Chromium версий 31+, независимо от производителя браузера (в некоторых хромоклонах в качестве экспериментальной возможности присутствует с версий 30+).

* В рамках этого проекта была выпущена универсальная Lite-версия, не имеющая каких-либо "нижних" ограничений по версии браузера, связанных с применением API управления загрузками. Снятие ограничений стало возможным путём урезания некоторых второстепенных функций аддона: эта вариация в принципе может работать на любых браузерах с поддержкой API загрузок, однако, её работоспособность в версиях браузеров ниже 29 автором не проверялась. Дальнейшее развитие этой линейки не предусматривается в силу её неактуальности на текущий момент.

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


Условия и особенности применения расширения

При использовании "Download + Actions • CR.RU" следует помнить о некоторых возможных ограничениях.

Конфликт со встроенным менеджером загрузки браузера

Возможен в браузерах, имеющий встроенный продвинутый загрузчик. Связано с "борьбой за власть" между возможными пересекающимися настройками встроенного менеджера и расширения. Вероятнее всего при этом "победит" встроенный загрузчик, хотя и не факт…)

Решение очевидно: внимательно проверьте ваши настройки и исключите вероятность конфликта. Если это невозможно, попробуйте отключить встроенный менеджер, доверив всё управление загрузками только самому расширению.

Конфликт с другими расширениями, имеющими функции управления загрузками

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

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


Исходный код, интерфейс и задействованные API

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

Расширение Download + Actions • CR.RU работает в фоновом режиме полностью автоматически и не требует интерактивного взаимодействия с пользователем. Работа всех функций управления загрузками зависит только от заданных пользователем правил и активных настроек.

Текущая версия расширения не имеет никакого интерфейса управления, кроме страницы Настроек, на которой задаются все доступные варианты автоматизации действий с загружаемыми файлами. Настройки отслеживаются и применяются фоновым скриптом сразу же после их сохранения.

Исходя из этого, кнопка расширения на тулбаре, отображаемая только в браузерах версий 63+, может быть скрыта по желанию пользователя без какого‑либо ущерба для функциональности. При этом открыть настройки можно только в блоке расширения на странице chrome://extensions/ (как и во всех браузерах версий до 63).

Для управления загрузками и отдельными функциями браузера применяется стандартный API chrome.downloads, для работы с которым в манифесте аддона запрашивается разрешение [ "downloads" ].

Кроме указанного, в манифесте запрашиваются дополнительные* разрешения [ "downloads.open", "downloads.shelf" ], предназначенные для опционального открытия загруженных файлов и для управления отображением штатной панели загрузок браузера (так называемой "лопатой").

* Отсутствуют в универсальной Lite-версии, ограничивают снизу допустимую версию браузера (30+).

Все заданные пользователем настройки и параметры сохраняются только в локальном хранилище расширения, синхронизация отсутствует. Для работы с хранилищем задействуется стандартный API chrome.storage, для этого в манифесте запрашивается* соответствующее разрешение [ "storage" ].

* В принципе, можно обойтись и без этого запроса, поскольку объём сохранённых данных на практике не превышает допустимых максимальных размеров по умолчанию (5Mb).

Для работы со вкладками и открытия штатной страницы Диспетчера загрузок браузера применяется API chrome.tabs, в манифесте для него также указано соответствующее разрешение [ "tabs" ].

Для использования горячих* клавиш под некоторые функции аддона применяется API chrome.commands. В текущей версии используется единственный хоткей, для оперативного открытия в Проводнике папки загрузок (по умолчанию <Alt+J>), который может быть штатно переопределён или просто отключён пользователем на странице управления расшширениями (chrome://extensions/, кнопка "Быстрые клавиши").

* Отсутствуют в универсальной Lite-версии, ограничивают допустимую версию браузера по API (25+).

Как и в оригинальном "оперном" аддоне, в качестве языка интерфейса и описания в русском хром-форке используется единственная локализация, только русская (жёстко зашита в коде).

* При необходимости можно добавить и басурманский, но пока на это "нет спроса"… :)

Аддон не имеет практических ограничений по версии браузера, используемые API работают в версиях 30+ (никак не ограничивается в версии Lite). Работоспособность в версиях ниже 29 не проверялась и не гарантируется.

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



Так держать! :)
Технические детали

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

URLПоделиться

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