Календарь • RU : Что "под капотом"

Бармалей 29.11.2017 16.03.2021 2880.0

В этом материале рассмотрены технические аспекты работы расширения Календарь • RU, указаны отличия от оригинала и аналогов, приведены некоторые технические подробности по разработке.

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


Технические особенности и отличия от аналогов

Основные технические отличия* расширения "Календарь • RU" от прототипа заключаются в следующем:
* Указаны номера версий, с которой отдельные фичи введены, если не указано – есть во всех версиях.

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

    Профессиональные праздники добавлены только для России, для других стран – только официальные праздники.

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

    Гарантировано работает – смотрим номера версий браузеров в описаниях отдельных релизов аддона в "Истории версий".
    На более старых версиях проверяем самостоятельно (на Iron-17 уже проверялось – на нём не работает…:))


    Версия 2017.11.30 и новее:
  • Функции оперативного отключения сетки праздников и масштабирования окна календаря.
    Версия 2017.12.1 и новее:
  • Функция открепления окна календаря – вместо попапа на тулбаре откроется отдельное окно.
    Версия 2017.12.16 и новее:
  • Динамический индикатор текущего локального времени (статический вывод есть/отключён в исходном аддоне).
  • Изменён/допилен порядок расчёта/вывода номеров недель – 1-я неделя года всегда начинается с 1 января.

    Автор в курсе, что по стандартам ISO разделение на недели должно происходить по четвергу, но с 1.1 красивше… :))

  • Специфичные памятные даты (в частности – для форума Ru-Board, выделены вот таким цветом).

О функциональных отличиях расширения читаем в статье Календарь • RU : Нужен каждый день.


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

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

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

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

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

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

Для хранения пользовательских настроек используется API chrome.storage. В текущей версии расширения в манифесте для него не требуются дополнительные разрешения, размер данных не превышает ограничения по умолчанию (5Mb).

Расширение "Календарь • RU" полностью русифицировано, для всех элементов интерфейса, сообщений и пунктов меню используется единственный язык – русский. Текстовые строки жёстко зашиты в код, другие языковые локализации не поддерживаются. Это сделано с целью упрощения кода расширения и для повышения его быстродействия в целом.

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

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



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

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

URLПоделиться

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