Big Toolbox • RU : Что "под капотом"

Бармалей 17.05.2014 27.02.2021 2770.0

Пояснения по особенностям работы с собственным NPAPI‑плагином в расширении Big Toolbox • RU. Некоторые технические подробности по разработке и особенности применения аддона на различных версиях браузеров.

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


Особенности работы и управления жестами мыши

Одна из основных функций Big Toolbox • RU – обеспечение расширенного управления при помощи жестов мыши. Эта функция расширения реализуется на основе NP‑плагина, входящего в комплект* аддона и работающего только при условии поддержки таких плагинов в вашем браузере (классические Chromium‑браузеры версий до 45).

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

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

  • Жесты мышью (Супер-жесты) – глобально действующие жесты мышью, предназначены для управления навигацией в браузере и/или для вызова других функций (включая управление вкладками, окнами, страницами и фреймами на них, эмуляцию нажатия пользовательских горячих клавиш, вызов расширенных функций поиска или перевода, работы с изображениями, электронной почтой, запуск скриптов и многие другие функции). Вы можете использовать эти жесты на всех страницах, в том числе – и на служебных.
  • Жесты колесом мыши – специальные действия, выполняются при прокрутке колеса вверх или вниз, удерживая правую кнопку мыши. Могут использоваться для любых действий из перечисленных выше, применяются для повышения удобства управления.
  • Продвинутые жесты – специальные "двухкнопочные" действия, выполняемые при щелчке левой (правой) кнопкой мыши при удерживании правой (левой) кнопки. Могут использоваться для любых действий из перечисленных выше, применяются для повышения удобства управления.
  • Супер-клик – выполнение заданного действия при щелчке средней кнопкой мыши в омнибоксе (адресной строке). Для выбора доступны все функции, перечисленные выше.
  • Супер-перетаскивание – применяется для работы с выделенным текстом, ссылкой, изображением или другим объектом, производится с помощью зажатой левой кнопки, позволяет выполнить сразу несколько действий для перетаскиваемого объекта. Например, можно открыть выделенный текст в выбранном поисковике в новой фоновой (или активной) вкладке слева (справа) от текущей вкладки.
  • Эмуляция нажатия горячих клавиш – частный случай использования жестов мыши, доступны все полностью настраиваемые действия, выполняемые как с помощью жестов мыши, так и по нажатию заданных хоткеев.

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

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

Подробнее о работе с NP‑плагинами читаем в статье Краткое пояснение про плагины NPAPI и PPAPI.


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

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

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

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

Исходя из сказанного, на текущий момент круг клиентских браузеров, на которых "Big Toolbox • RU" может работать, весьма ограничен. Тем не менее, аддон можно использовать для решения части задач в браузере любой версии.


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

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

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

Для выполнения действий на веб-страницах применяется API chrome.tabs, обеспечивающий работу контент-скриптов и запуск пользовательских букмарклетов.

Для работы с закладками применяется API chrome.bookmarks.

Для работы с историей просмотров и поиска по ней применяется API chrome.history.

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

Для обеспечения работы аддона с веб-сайтами в манифесте запрашиваются разрешения [ "http://*/*", "https://*/*" ].

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

* При необходимости можно добавить её самостоятельно из архива установщиков оригинальных версий.

Аддон не имеет практических ограничений по версии браузера, используемые API работают в версиях 19+.

Исходный код частично обфусцирован (сжатие применяется и в расширении-прототипе). Для удобства при возможных доработках и облегчения читаемости кода при его исследовании, вы можете нормализовать его при помощи соответствующих онлайновых конверторов или плагина JSTool к редактору Notepad++.



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

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:19+
Протестировано в:SRWare Iron 29/30/31/36
Технологии и API:Чистый JS (ES5), API: browserAction, bookmarks, history, tabs, cookies, storage, contextMenus, management, idle, topSites

URLПоделиться

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