Bookmark All RU : Что "под капотом"
Опубликовано: Бармалей · 25.11.2014 · 00:02 ••• Обновление: 11.04.2021 · 23:01 0

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

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

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


Отличия от оригинала и аналогов

По отношению к исходному аддону и его функциональным аналогам в Bookmark All RU имеются следующие отличия:

  • Форк оптимизирован для работы на любых версиях хром-браузеров, код проверен на версиях 29-87.
    В аддоне "осовременены" применяемые API с учётом полной обратной совместимости JS-функций.
  • Аддон можно вызвать на любых страницах, в том числе – на локальных, служебных и в гуглозине…)
    Аддон не работает напрямую с содержимым вкладок и не использует инжекцию скриптов на них.
  • В отличие от оригинала форк не имеет фонового процесса и выгружается из памяти при неактивности.
    Кроме того, добавлена функция быстрой выгрузки после завершения любых действий или настроек.
  • Высокая скорость работы за счёт оптимизации кода и изменения логики вызова и запуска скрипта.
    В отличия от оригинала отсутствует библиотека JQuery, форк переписан полностью на чистом JS.
  • Все функции объединены в один скрипт, удалены все лишние файлы, размер уменьшен в 16 (!) раз.
    Аддон может работать в режиме "оффлайн", функции синхронизации настроек не применяются.
  • В отличие от других "менеджеров сессий", подпапки сессий сохраняются на штатную панель закладок.
    Отдельного хранилища нет, всё управление папками доступно стандартными средствами браузера.
  • Добавлено задание корневой папки для сохранение сессий, настраивается при установке или позднее.
    В исходном расширении все сессии сохранялись в корне стандартной папки "Другие закладки".
  • В дефолтную маску имени папки добавлено текущее время, маска выглядит так: 2014.11.25 ··· 14:11:25.
    Перед сохранением можно вручную изменить автоматически генерируемое имя этой папки.
  • Кроме вызова по кнопке на тулбаре добавлен вызов по горячей клавише и вызов из контекстного меню.
    Обе функции опциональны и настраиваются по желанию, настройки сохраняются в localStorage аддона.
  • Добавлена опциональная возможность автоименования сохраняемых подпапок без запроса подтверждения имени.
    При этом сессия сохраняется с именем папки "дата-время", всё "пишет молча", отказаться нельзя… :).
  • Добавлены минимальные настройки – выбор корневой папки, активация контекстного меню и автоименования.
    Все настройки реализованы модальными диалогами, отдельной страницы настроек нет (и не будет).

Известные эксплуатационные проблемы и их решение

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

Проблема известная, проявляется на браузерах версий 72+. Это не является ошибкой расширения и связано с изменением интерпретатора API chrome.commands.onCommand в новых версиях Chromium, из-за чего и возникает ошибка определения вызова горячей клавиши, после чего аддон может не работать в принципе.

Решение проблемы: установка более новой версии расширения с изменённым механизмом работы с хоткеями.

2. Аддон не работает в некоторых версиях браузеров 360 Extreme Explorer.

В браузерах 360 Extreme Explorer аддон работает частично, начиная с версии 11.0.2216+ (CR69) и во всех версиях линеек 12 и 13 (CR78/86) работать не будет! Это не является проблемой расширения и связано с некорректной реализацией в этих версиях функции API chrome.bookmarks.create(), по этой же причине в указанных билдах и линейках полностью неработоспособны любые "закладочные" аддоны.

Решение проблемы на текущий момент не найдено. Возможно, в будущем разработчики браузера исправят ошибку…

См. также: Ru-Board: О неработоспособности аддона в браузерах 360 Extreme Explorer (проблема и обсуждение).


Технические детали разработки

Ниже приведены некоторые технические подробности по исходному коду и отдельным функциям расширения.

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

Bookmark All RU не использует для работы никакие сторонние библиотеки (привет любителям JQuery)).

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

Скрипт работает в "строгом" режиме – для гарантированного выполнения функций и облегчения отлова ошибок.

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

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

В общем, всё максимально компактно и "заточено" на оперативное решение задачи в пару кликов.)

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

Для запуска сохранения сессии при щелчке по кнопке на тулбаре применяется стандартный API chrome.browserAction.

Для запуска сохранения сессии через контекстное меню страницы применяется стандартный API chrome.contextMenus.

Для вызова функции сохранения по горячей клавише задействован* API chrome.commands.

* В текущей версии этот API не используется, при необходимости хоткей можно задать самостоятельно с помощью стандартной функции браузера "Быстрые клавиши" (на странице chrome://extensions).

Для получения списка всех открытых вкладок задействуется API chrome.tabs.

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

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

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

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

* Впрочем, если "дело пойдёт", прикрутить ещё и "басурманский" не является особой проблемой…)



Технические детали Бармалей
Бармалей 25.11.2014 11.04.2021 259 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:25+
Протестировано в:SRWare Iron 29/31/36/49 + 360 Extreme Explorer 9/11 (CR63/69) + Chromium 87
Технологии и API:Чистый JavaScript (ES5), API: tabs, bookmarks, contextMenus, storage, commands

Поделиться

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