Get CRX RU : Что "под капотом"
Опубликовано: Бармалей · 04.01.2014 · 02:00 ••• Обновление: 16.11.2021 · 19:52 0

Расширение Get CRX RU предназначено для использования в браузерах с движком Chromium и построено на базе стандартных API для этих браузеров. Кроме собственно функций API, в расширении применяются "самописные" процедуры (функции), написанные на языке JavaScript. Эти инструменты применяются для решения основной задачи расширения – загрузки (локального сохранения) из официальных репозиториев установочных файлов любых имеющихся там расширений, приложений или тем (далее – аддонов).

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

Функции получения прямой ссылки различаются для разных репозиториев. В частности, наиболее "анально-огорожен" в этом плане магазин приложений Google (CWS, Chrome WebStore). Тем не менее, шаблоны конечных URL известны достаточно давно и изменяются они достаточно редко (в CWS, напр., последний раз замена шаблона была сделана в июне 2014 года), что позволяет строить на их основе любые загрузчики (навскидку – только разнообразных клонов Get CRX в магазине CWS попадалось порядка десятка). К слову – кроме расширений-загрузчиков существуют также простейшие букмарклеты (как минимально необходимое) и даже отдельные сайты (как максимально комфортное для юзера)), позволяющие "скачать из гуглозина".

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

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

В этой статье мы рассмотрим:

Итак, поехали!


Классические версии

С технической точки зрения всё просто – по известному шаблону и с учётом URL текущей страницы (конкретного расширения в CWS) формируется прямая ссылка на установочный CRX-файл. Эта ссылка подставляется в окно интерфейса в виде поля ввода (чтобы можно было изменить имя файла на желаемое). При нажатии пользователем кнопки сохранения файл загружается из репозитория с атрибутом "download" (иначе будет запрос на установку) и сохраняется локально.

Основной API, применяемый в этой версии – chrome.contextMenus, служит собственно для вывода пункта в меню страницы и отработки щелчка по нему.

Второй API – chrome.tabs – служит для создания отдельной вкладки или окна с юзер-интерфейсом и для принудительной переотрисовки значка в омнибоксе (поскольку мы его гасим на время загрузки (и меню, кстати, тоже отключаем)), чтобы исключить конфликты многократного нажатия и т.п.). Принципиально его можно было бы и не использовать (что и было сделано в конечном счёте с заменой разрешения на универсальное activeTab).

В отличие от исходного аддона, в Get CRX RU дополнительно используется API chrome.pageAction – для вывода значка-кнопки в адресной строке страницы (омнибокс). Сюда же относится API chrome.declrativeContent – позволяет сделать выгружаемое из памяти расширение и задать правила отрисовки значка в омнибоксе (статический фильтр по URL страницы, позволяет выводить значок на нужных страницах без удержания аддона в памяти). В связи с периодическими "новшествами", вводимыми производителями браузеров, взаимодействие с омнибоксом также периодически глючило и отваливалось (не отрисовывался или не работал значок-кнопка). Для решения этих проблем и были выпущены своевременные фиксы в отдельных билдах (причём, не только в классических версиях).

Кроме указанных, в этой линейке был также задействован API chrome.downloads. Сделано это было исключительно для обхода огороженности хром-браузеров по части CRX-файлов (у них особый статус, по этому расширению браузер сразу же пытается либо установить "нечто", либо вякнуть "отсюда ставить нельзя" и т.д.). Это сразу наложило определённые ограничения на работу аддона и заложило его потенциальный конфликт с другими (криво написанными) качалками. Почему "криво" – потому как нормальный аддон "понимает", что качается и кем/чем инициирован процес закачки. Соответственно, нормальный аддон и не будет конфликтовать с загрузчиком Get CRX RU (сам загрузчик ни с чем не конфликтует, в нём отслеживаются только собственные закачки).

Для упрощения обработки "своих" загрузок и с учётом автоматической выгрузки фонового скрипта из памяти введено ограничение на число одновременных закачек – нельзя качать больше одного файла за раз. Кому "маловато будет" – простой совет – купите таблеток от жадности.)) Потому как на сегодняшних скоростях закачки подождать несколько секунд не является проблемой.

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

Остальные части кода классических версий предназначены чисто для украшательства юзер-интерфейса. Поэтому в дальнейшем, при развитии проекта Get CRX RU, автор отказался от интерфейсной части в виде хтмл-файла (окно или вкладка) и оставил только фоновую скриптовую часть, добавив к ней все остальные "плюшки".

Сначала это вылилось в…


Get CRX RU : Mini

Безинтерфейсная версия только со стандартным браузерным диалогом "Сохранить как..." основана на простейшем трюке "автоклика" по динамически создаваемой в памяти расширения ссылке. Как с тем сусликом – ты его не видишь, а он есть, так и тут – при вызове расширения на странице CWS в фоновом скрипте происходит тот же самый процес, что и в интерфейсе классических версий, только кнопки нажимает не юзер, а сам скрипт.)

Применяемые API – те же, что и в классических версиях, дополнительно добавлены отдельные улучшения скрипта для повышения стабильности, корректности и удобства загрузок. В частности, добавлено автоформирование имени.

К этому времени уже стало ясно, что голым загрузчиком нам не обойтись, тут и появилась линейка…


Get CRX RU : Mini Plus

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

Дополнительно (для формирования расширенных файлов описаний загрузок) в этой линейке запрашивается разрешение [clipboardRead] – чтение текущего буфера обмена с последующей вставкой его содержимого в файл описания.

Кроме того, расширен запрос разрешений по маске URL с масок только для CWS до глобальной [<all_urls>] – это позволяет работать со ссылками на страницы аддонов не только на сайтах самих репозиториев, но и на любом другом ресурсе. Соответственно, в скрипт/меню добавлены функции работы со ссылками, а также определяется маска допустимых URL, на которых в контекстном меню страницы будет показан значок "Скачать расширение…".

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

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

Поэтому автору пришлось немного "почесать репу" и сделать…


Get CRX RU : Mini Plus : Toolbar Mod

Выпущена единственная версия этой линейки, всё отличие от Mini Plus – в пересадке значка из омнибокса на тулбар.

Соответственно, изменился и API – chome.pageAction был заменён на chrome.browserAction.

Попутно был выпилен API chrome.commands – с 72-й версии движка появились мелкие проблемки при его использовании, вплоть до нерабочести аддона в целом. Проблемки, конечно же, были оперативно решены, но "осадочек остался", да и необходимости в нём в тулбар-моде нет – для кнопки на тулбаре можно использовать штатный браузерный способ задания горячей клавиши вызова ("Быстрые клавиши").

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

Тем не менее, упреждая возможные будущие проблемы и с тулбарными "кнопками", автор решил отказаться от них.

Так появилась линейка…


Get CRX RU : Micro Plus : Context Menu Mod

..или просто Micro Plus, в которой нет никаких других API кроме контекстного меню и загрузчика.

Смотрим текущий манифест, осталось всего два API + уже применяемые разрешения:

"permissions": [ "activeTab", "contextMenus", "downloads", "clipboardRead", "<all_urls>" ]

В интерфейсе управления расширениями эти разрешения отображаются следующим образом:


Щёлкните по изображению, чтобы просмотреть скриншот на другом языке.

При этом в функционал Get CRX RU добавлена возможность полноценной загрузки аддонов и тем из репозиториев Opera Addons (OAS), Addons Mozilla.org (AMO), MS Edge (MEA), GreasyFork (GFK), OpenUserJS (OJS) и UserScripsMirror (USM) . Всё сделано по аналогии с ранее имеющимися функциями для CWS, подробное описание всех дополнительных функций линейки Micro Plus приведено в её описании, поэтому повторяться не стану, отмечу лишь, что в этой линейке также решён и ряд "застарелых болячек" аддона и добавлены некоторые полезные сервисные функции.

Начиная с версии 2021.9.25 в этой линейке сделана стандартная локализация интерфейса (меню, сообщения, диалоги). В связи с этим к списку используемых API добавился ещё и chrome.i18n. Никаких дополнительных разрешений для него не требуется, языки автоматически выбираются по локали браузера. Подробности по применению локализации приведены ниже в разделе "Локализация интерфейса и перевод".

В итоге: из всех линеек наиболее удобной и гарантированно работающей, а также имеющей максимальный дополнительный функционал, является линейка Get CRX RU : Micro Plus : Context Menu Mod. Эта линейка рекомендуется к использованию на любых версиях браузеров.


Get CRX RU : CWS JS Mod

..или просто JS Mod, в котором нет никаких специфичных браузерных API, только чистый код JavaScript ES5.

Линейка является обычным пользовательским скриптом (User.JS) и может быть установлена в любой ES5‑совместимый браузер либо нативно (если поддерживается как в Chromium'ах) либо с помощью любого подходящего менеджера скриптов (GreaseMonkey, TamperMonkey, ViolentMonkey и другие подобные).

Подчеркну, что эта линейка ни в коей мере не является "конкурентом" основному аддону проекта Get CRX RU, но позиционируется в качестве альтернативы для пользователей любых не‑хромбраузеров.

Основное отличие линейки – кроссбраузерность и универсальность, скрипт может работать в Internet Explorer, Firefox, Opera и вообще в любых* браузерах, не имеющих "анальной огороженности" по отношению к репозиторию CWS.

* Принципиально скрипт может работать и в любом Chromium'е, если запустить его вручную на странице Chrome WebStore (например, в консоли). Однако, исходя из известной "огороженности", удобство применение скрипта при этом минимально и именно поэтому и оговаривается "для не‑хромбраузеров".

В целях обеспечения совместимости с максимально широким диапазоном версий браузеров в скрипте не применяются новшества, присутствующие в текущих стандартнах JS (ES6/7), все функции скрипта работоспособны в любом достаточно старом браузере с поддержкой стандартов ES5 (все версии 29+).

Применяемые в скрипте разрешения определяют доступ к страницам поддерживаемого репозитория (CWS):

// @include https://chrome.google.com/webstore/detail/*
// @match   https://chrome.google.com/webstore/*/*

Из всего функционала "Get CRX RU" оставлена только возможность упрощённой* загрузки аддонов и тем из репозитория Chrome WebStore и функции онлайн‑просмотра его исходного кода (Rob Wu CRX-viewer) и перехода в архив текущего аддона (если он есть). Всё сделано по аналогии с фичами для CWS, ранее опробованными в других линейках проекта, описание вызова и использования дополнительных функций скрипта приведено в общей документации.

* Только скачать напрямую и сохранить файл, понятное имя и файл описания не создаются.


Локализация интерфейса и перевод на другие языки

Язык интерфейса: до версии 2021.9.25 – только русский (локализация жёсткая, зашита в коде), другие* локализации отсутствовали. Это было связано со значительным упрощением кода, а также с тем, что при создании расширения автор в первую очередь ориентируется на русскоязычных пользователей. На текущий момент, начиная с указанной версии, в аддоне имеется и вторая локализация, английская.

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

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

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

Единственным исключением являются пункты переключения языка страниц в репозиториях CWS и MEA (расположены в подменю "Параметры текстового описания"):
• "Изменить язык страницы на [ EN ]" – принудительно переключает язык страницы с любого на английский;
• "Изменить язык страницы на [ RU ]" – вместо "RU" здесь может отображаться и другой язык, в зависимости от текущей локали браузера, и, соответственно, переход будет сделан на страницу, соответствующую языку этой локали.

Оба этих пункта НЕ будут отображаться в английских (en, en-US, en-GB) локалях браузера.
Это исключение добавлено исходя из отсутствия (в целом) необходимости переключения с английского на английский. :)

При работе с локализованными версиями расширения необходимо помнить важный момент:

После смены языковой локали в браузере следует обязательно сделать перезапуск для перестроения меню!

В противном случае локализация меню остаётся от предыдущего языка интерфейса браузера.

Такая необходимость обусловлена тем, что в текущих версиях построение меню производится однократно, при установке или обновлении версии. Кроме того, меню также автоматически обновляется и при изменении некоторых параметров – например, при изменении уровня вложенности ("Классическое одноуровневое меню") или режима обработки ссылок ("Загрузка по ссылкам на любом сайте").

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

В текущих версиях расширения после смены локали и перезагрузки браузера переустановка НЕ требуется, достаточно выполнить обычный сброс аддона – выбрать в подменю "Сервисные функции и интерфейс" пункт "Перезагрузить и устранить ошибки" (в английской локали "Restart and reset any errors"):


Щёлкните по изображению, чтобы просмотреть скриншот на другом языке.

Во избежание вопросов из серии "у меня всё равно не получается", следует помнить, что:

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

1A. Начиная с версии 2021.10.6 перезагрузка через указанный пункт предусматривает ещё и автопроверку изменения локали браузера и является штатным способом принудительного перестроения меню в случае, если будет обнаружена смена локали. Теперь это работает независимо от версии браузера и способа установки расширения

2. Если расширение установлено "обычным способом" (из загруженного CRX‑файла), для перестроения меню при изменении текущей локали браузера можно просто переустановить* аддон обновлением поверх установленной версии, любым способом, например – перетаскиванием CRX‑файла нужной версии на страницу chrome://extensions. Никакие настройки при этом не теряются, но меню будет автоматически перестроено по языку текущей локали браузера.

* Этот вариант всегда сработает корректно, он применим ко всем версиям браузеров и является единственным возможным во всех браузерах версий CR48+ (уже не единственным, см.п.1А выше)).

2А. В случае установки в режиме разработчика (Developer Mode) вы можете использовать стандартную* функцию браузера в этом режиме, нажав ссылку-кнопку "Обновить" в блоке расширения на странице chrome://extensions.

* Этот вариант всегда сработает корректно и применим к любым версиям браузеров. Это действие, по сути, аналогично обновлению аддона путём переустановки поверх, меню при этом будет автоматически пересоздано с учётом текущей локали браузера.

3. В браузерах версий CR29-47 переустановка или ручной перезапуск НЕ потребуются, если был включен режим принудительного* стартового перестроения меню – подменю "Сервисные функции и интерфейс", опция "Принудительное перестроение меню" (в английской локали "Force startup context menu build").

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


Поддержка перевода на другие языки

Для локализации интерфейса расширения используется стандартный API и перевод на любой язык может быть выполнен простой добавкой в комплект аддона дополнительного текстового файла в формате JSON.

Автором приветствуется ваше желание сделать дополнительные переводы на другие языки, поэтому если вам это интересно и действительно необходимо – смотрите исходный код, сравнивайте текущие имеющиеся локали и переводите самостоятельно на желаемый вам язык.

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

Короче, велкам… :)


На этом общее описание "матчасти" отдельных линеек Get CRX RU завершено.

…но чтобы читатель был полностью "в курсе", следует добавить ещё и…


Дополнительные примечания по исходному коду

Исходный код расширения "Get CRX RU" написан с применением только чистого JavaScript (ES5). В коде отсутствуют какие‑либо функции или алгоритмы, неподдерживаемые в "старых" браузерах или, наоборот, могущие привести к проблемам в современных версиях.

В актуальных билдах расширения используется "строгий режим" запуска скриптов – возможно, в отдельных случаях это может повлиять на работоспособность в браузерах версий 73+. Причины этого (пока) неизвестны, но если в вашей конкретной конфигурации "что-то пошло не так" – можно попробовать отключить строгий режим, для чего достаточно удалить первую строку в скрипте – "use strict;" (хотя, судя по отзывам, это в большинстве случаев никак не влияет на решение проблемы работоспособности аддона).

Кроме того, на современных браузерах с движком CR‑81+ могут быть проблемы с получением дополнительных данных (но не самих CRX‑файлов!) со страниц репозитория Chrome WebStore. Это связано с общим ужестожением политики безопасности в этих браузерах и с применением в аддоне XHR‑запросов для доступа к таким данным. Во избежание сложностей, я настоятельно рекомендую вам ознакомиться с подробностями этой проблемы и методами её решения, которые приведены в отдельной статье (а также и в кратком FAQ'е).

Практических ограничений по версии браузера не имеется, используемые API работают в версиях 29+ (рекомендуемая версия для полнофункционального применения 31+).

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

Исходный код текущей версии расширения можно просмотреть в режиме онлайн на любом из ресурсов, приведённых в материале Get CRX RU : Micro Plus : LBSC*.

* См.также: Что такое "LBSC" и зачем это нужно.


Модульная структура скриптов с разделением кода

До версии 2021.9.25 все функции загрузчика и все сервисные функции и настройки "Get CRX RU" размещались в одном общем скрипте. Кроме этого файла, установщик аддона содержал только файлы манифеста и иконки.

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

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

В связи с указанным подходом, теперь в комплект аддона входят следующие файлы скриптов:

  • get_crx_file.js – основной скрипт с функциями загрузчика и запуска всех других модулей;

    Запускается всегда, при вызове любых действий или настроек, указан как основной скрипт в манифесте.

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

  • mod_cmenu.js – модуль установки контекстного меню и запуска прямых ссылочных переходов;

    Запускается только при перестроении меню, при изменении любых настроек и опций или при вызове из меню ссылок из группы "Cкачать CRX : Ресурсы и ссылки" (как промежуточный скрипт с общими, но редко используемыми функциями).

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

  • mod_desctx.js – модуль запроса и формирования текстовых описаний загрузок;

    Запускается и работает только при включении настройки "Создавать описание для загрузки".

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

  • mod_extens.js – модуль проверки обновления, прямых ссылочных переходов и экспорта/импорта настроек.

    Наиболее редко используемый модуль, запускается из модуля mod_cmenu.js, в текущих версиях – только при выборе пунктов меню группы "Cкачать CRX : Ресурсы и ссылки" или при работе с резервными копиями настроек (создание и восстановление, отдельная группа действий в подменю "Сервисные функции и интерфейс").

    При вызове из меню пункта "Проверить и скачать обновление") выполняет фоновый запрос и проверяет номер текущей стабильной версии на сайте, сравнивает его с версией, установленной в вашем браузере, и по результату проверки выдаёт соответствующее сообщение:

    Щёлкните по изображению, чтобы просмотреть скриншот на другом языке.

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

    * В текущих версиях аддона при этом выполняется и автозапуск** загрузки CRX-установщика формата, соответствующего версии вашего браузера (до версий CR72 всегда отдаётся CRXv2, для более новых CRXv3).

    ** В зависимости от "огороженности" браузера может потребоваться подтверждение скачивания "опасного файла". :)


    Щёлкните по изображению, чтобы просмотреть скриншот на другом языке.


Особенности работы расширения в режиме "incognito"

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

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

Ранее автором предпринимались (неоднократные, но безуспешные)) попытки решить эту "мелкую неприятность", но вплоть до версии 2021.10.19 проблема так и не была решена.

На текущий момент, начиная с указанной версии аддона, эта проблема полностью снята в браузерах версий CR‑63+, файлы описаний загрузок и файлы бэкапов в этих браузерах теперь сохраняются правильно независимо от текущего режима окна (обычное или инкогнито).

В браузерах более ранних версий (например, CR‑31‑49) проблема решена лишь частично – если в сеансе открыто окно "incognito" – корректное сохранение текстовых файлов будет возможно только в нём. При этом в наиболее старых версиях (CR29) несохраняемость, всё же, остаётся в любом случае. Для нормальной работы в обычном окне в этих браузерах следует закрывать все инкогнито-окна перед использованием загрузчика.

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

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

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


Об использовании расширения в браузерах версий старше CR49

При использовании "Get CRX RU" в браузерах достаточно старых версий возможна некорректная работа отдельных функции загрузчика. Это не является ошибкой расширения и связано с ограничениями в некоторых браузерах полноценной поддержки API загрузки файлов.

Подобная ситуация возможна при работе с любым браузером версии старше CR31. В частности, она наблюдается в браузере SRWare Iron 29. Для смягчения этих проблем в аддон добавлены некоторые дополнительные "костыли", устраняющие бо́льшую часть подобных ошибок.

Кроме того, в достаточно старых браузерах не исключены и другие проблемы с доступом к репозиториям дополнений, связанные с применением современных технологий (скрипты, стили и т.д.). Это также не связано с ошибками в аддоне и зависит только от разработчиков самих магазинов расширений и их сайтов.

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

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

Тем не менее, при реальной необходимости полная поддержка может быть добавлена и для достаточно старых версий браузеров путём дополнительной доработки исходного кода. Эта доработка может быть выполнена автором на условиях частного партнёрства с конкретным заказчиком (по обоюдной договорённости).


Как говорится, "начальник воровайки доклад закончил", или – как там в одном старом фильме – "вот и вся наука!" -)



Технические детали Бармалей
Бармалей 04.01.2014 16.11.2021 373 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский, Английский
Версия браузера:29+
Протестировано в:SRWare Iron 29/31/49 + 360 Extreme Explorer 9/11/12/13 (CR-63/69/78/86) + Chromium 87
Технологии и API:Чистый JavaScript (ES5), API (в зависимости от версии): contextMenus, downloads, clipboardRead, tabs, pageAction, declarativeContent, commands, browserAction, content-script, i18n

Поделиться

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