' +'' +'' +'' +'' +'' +'' +'' +'' +'' +'')//-->
Пояснения по особенностям работы с внешним плагином-коннектором в расширении IETabYC • RU. Некоторые технические подробности по разработке и особенности применения аддона.
В этой статье:
Расширение IETabYC • RU использует для отображения страниц в режиме IE внешний плагин-коннектор для связи с системным Internet Explorer'ом. Этот плагин устанавливается отдельно и регистрируется для системы в целом, что позволяет установить его однократно для использования во всех браузерах, а также производить установку или обновление самого аддона без необходимости повторной переустановки и перерегистрации коннектора.
В отличие от оригинала и его репаков русский форк не содержит установщика внешнего плагина, в комплект аддона входят только js/html файлы, сам же плагин нужно качать и ставить отдельно!
Такой подход был выбран при выпуске первоначальной версии "ИЕТабыча" и сохраняется и во всех последующих релизах. Основная причина разделения – плагин не является предметом разработки расширения, в русском форке используется оригинальная версия коннектора без каких-либо изменений.
Кроме того, удаление плагина из установочного пакета расширения снижает вероятность проблем при загрузке и последующей установке аддона в большинстве браузеров. Ну и, наконец, сам размер установочного пакета при этом значительно уменьшается (практически в 10 раз).
Общий метод установки внешнего плагина-коннектора подробно описан в Руководстве пользователя, ниже будут указаны некоторые технические отличия доступных вариантов плагина.
Для начала следует отметить, что на текущий момент "судьба" оригинального аддона весьма туманна, статус проекта неизвестен, какие-либо сведения об оригинале отсутствуют. В русском форке используется последняя версия коннектора, выпущенная в марте 2014 года, но, тем не менее, работающая и в современных браузерах.
Итак, что мы имеем в наличии из архивных копий:
* На всякий случай: в своё время мне не понравилась замена исходной ссылки и метода дистрибуции плагина и хотя установленный Каспер молчал как партизан, я дважды (с интервалом) проверил "новый" установщик в онлайне: результаты текущей проверки и детализация отчёта VirusTotal. Локальный Касперский, кстати, и теперь не против этого инсталлера… :)
Вот такая вот "каша", разобраться* в которой "без бутылки" непросто, особенно с учётом того, что независимо от установщика любой из этих плагинов‑коннекторов корректно работает со всеми оригиналами и форками, хотя все три варианта плагина имеют различия в коде. Для окончательного "разрыва мозга" добавлю, что версия файла плагина во всех трёх случаях одна и та же… :)
* И тогда, в 2014 году, и, тем более, сегодня найти разработчика плагина нереально, это китайцы, сэр…)
В итоге, исходя из желания внести хоть какую-то ясность и управляемость в процесс установки, а также учитывая, что я и сам не люблю "мутные инсталлеры" и предпочитаю делать всё своими руками, для подключения коннектора была выбрана модель самостоятельной ручной установки плагина пользователем с последующей ручной регистрацией его с помощью шаблонного* файла реестра.
* Необходимые ветки реестра и значения параметров в шаблонах указаны на основании данных из скрипта исходного инсталлятора, работоспособность метода неоднократно проверена на разных системах и под разными браузерами.
На этом сайте доступен для загрузки текущий рабочий комплект для ручной установки плагина, состоящий из последней проверенной версии библиотеки плагина (от 13.03.2014, №3 в списке выше), шаблонов файлов реестра для регистрации и удаления плагина в системе и краткой инструкции по применению.
Процесс установки и регистрация в системе NP-плагина с помощью этого комплекта предельно прост: Указаны соответствующие имена файлов из комплекта.
* Например, в папку "/plugins" вашего хром-браузера, файл также можне переименовать по желанию.
Также просто выполняется и удаление с отменой регистрации в системе плагина-коннектора: Указаны соответствующие имена файлов из комплекта.
Необходимо помнить, что в силу использования внешнего плагина-коннектора для нормальной работы расширения требуется поддержка NPAPI-плагинов в браузере. Такая поддержка доступна во всех браузерах на движке Chromium версий до 45 включительно, а также в некоторых современных хромоклонах типа 360 Extreme Explorer и ему подобных.
Подробнее о работе с этими плагинами читаем в статье Краткое пояснение про плагины NPAPI и PPAPI.
Исходя из сказанного, на текущий момент круг клиентских браузеров, на которых "IETabYC • RU" может работать, весьма ограничен. Тем не менее, аддон можно использовать для решения каких-либо специфичных задач в любом браузере подходящей версии. Что касается применения китайских хромоклонов: независимо от наличия в них встроенной поддержки второго движка, расширение полностью сохраняет работоспособность и на современных версиях.
На всякий случай: аудит исходного кода плагина‑коннектора на предмет безопасности не производился (по причине отсутствия этого самого кода), плагин используется в русском форке по принципу "как есть". Тем не менее, нужно отметить, что каких‑либо "побочных явлений" в виде несанкционированной рекламы и тому подобных проблем за период эксплуатации с февраля 2014 года автором не выявлено, основную задачу по поддержке движка Trident от системного Internet Explorer этот плагин решает корректно.
Код использует только чистый JS (ES5), все неподдерживаемые в "старых" браузерах функции заменены на аналоги.
Для отрисовки содержимого вкладки в режиме IE используется проксирование через плагин‑коннектор. При этом все переходы в пределах вкладки также происходят в режиме IE. Открытие ссылок в новых вкладках производится в режиме WebKit (если в ваших Настройках не заданы соответствующие правила автоматического переключения).
При вызове режима IE из контекстного меню ссылок они будут открыты в новой вкладке.
Для переключения режима текущей вкладки с WebKit на IE (и обратно) применяется API chrome.pageAction. Для переключения режима отображения вкладки и для выполнения других действий через контекстное меню страницы используется API chrome.contextMenus. Для выполнения действий на веб-страницах применяется API chrome.tabs.
Для текущего хранения всех пользовательских настроек используется API chrome.storage.
Для обеспечения корректной работы аддона с любыми хостами и протоколами в манифесте запрашиваются разрешения [ "http://*/*", "https://*/*" ].
В русском форке сделана полноценная русификация интерфейса (добавлена отдельная локализация), русская локаль используется по умолчанию. Английская локализация оставлена, частично доработана и исправлена. Китайская* локаль в русском форке не поддерживается и удалена из установочного комплекта.
* При необходимости можно добавить её самостоятельно из архива установщиков оригинальных версий.
Аддон не имеет практических ограничений по версии браузера, используемые API работают в версиях 29+.
Исходный код НЕ обфусцирован, исключительно для удобства при возможных доработках и облегчения читаемости кода при его исследовании. Если кому-то это критично – удалите комментарии и пропустите через компрессоры.)