' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'')//-->
В материале описаны отличия от аналогов, условия и особенности работы расширения Download + Actions • CR.RU, указаны требования к клиентскому браузеру и пути решения возможных проблем, приведены некоторые технические подробности по разработке.
В этой статье:
В отличие от оригинального расширения "Download + Actions • CR.RU" имеет следующие особенности:
Связано с функциями управления всплывающей панелью загрузки ("лопатой"), отсутствует в универсальной Lite-версии.
Для полноценной работы расширения требуется версия браузера не ниже 30.
Это требование обусловлено использованием части функций API управления загрузками, поддержка которых в более старых* версиях браузеров отсутствует. Такая поддержка гарантированно доступна во всех браузерах на движке Chromium версий 31+, независимо от производителя браузера (в некоторых хромоклонах в качестве экспериментальной возможности присутствует с версий 30+).
* В рамках этого проекта была выпущена универсальная Lite-версия, не имеющая каких-либо "нижних" ограничений по версии браузера, связанных с применением API управления загрузками. Снятие ограничений стало возможным путём урезания некоторых второстепенных функций аддона: эта вариация в принципе может работать на любых браузерах с поддержкой API загрузок, однако, её работоспособность в версиях браузеров ниже 29 автором не проверялась. Дальнейшее развитие этой линейки не предусматривается в силу её неактуальности на текущий момент.
Исходя из сказанного выше, вы можете самостоятельно проверить работу расширения на любой "раритетной" версии браузера. При этом следует убедиться в отсутствии каких-либо системных консольных ошибок путём включения и последующего тестирования каждой из опций в Настройках, в противном случае никакие претензии по нерабочести отдельных функций аддона автором рассматриваться не будут.
При использовании "Download + Actions • CR.RU" следует помнить о некоторых возможных ограничениях.
• Конфликт со встроенным менеджером загрузки браузера
Возможен в браузерах, имеющий встроенный продвинутый загрузчик. Связано с "борьбой за власть" между возможными пересекающимися настройками встроенного менеджера и расширения. Вероятнее всего при этом "победит" встроенный загрузчик, хотя и не факт…)
Решение очевидно: внимательно проверьте ваши настройки и исключите вероятность конфликта. Если это невозможно, попробуйте отключить встроенный менеджер, доверив всё управление загрузками только самому расширению.
• Конфликт с другими расширениями, имеющими функции управления загрузками
Это нормально и вполне ожидаемо – не забывайте, что все расширения в браузере имеют одинаковый приоритет и не могут менять настройки (и функции) своих работающих аналогов. При этом каждый из "конкурентов" будет стараться выполнить свою задачу, поэтому появление конфликтов в таких случаях просто вопрос времени – ведь, как известно, "два медведя в одной берлоге обязательно подерутся"…)
Решение: внимательно смотрите ваши настройки и учитывайте возможности других установленных у вас расширений. По возможности исключите конфликт, оставив только один менеджер для управления загрузками, либо настройте разные аддоны так, чтобы их функции не пересекались.
Код использует только чистый 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 не проверялась и не гарантируется.
Исходный код НЕ обфусцирован, исключительно для удобства при возможных доработках и облегчения читаемости кода при его исследовании. Если кому-то это критично – удалите комментарии и пропустите через компрессоры.)