Skip to content

Документация

Для работы расширения требуется версия Chrome 120 и выше. На данный момент другие браузеры не поддерживаются.

Правила

В контексте расширения, правило представляет собой JavaScript и/или CSS код, который задействуется на веб-страницах, соответствующих его URL паттернам.

URL паттерны

  • Паттерн смеет схему: <scheme>://<host>/<path>;
  • Можно комбинировать через запятую: https://one.ru/*, https://two.ru/*;
  • Через ! помечается исключающий паттерн: !https://excluded.com/*.

Изменения с версии 3.0

Начиная с версии 3.0 возвросли требования к URL паттернам расширения, подробно о них можно почитать на странице Google. Если коротко:

  1. Паттерн должен начинаться строго со схемы http|https|*;
  2. Домен и зону нужно писать без масок: one.ru, но поддомен можно *.one.ru. Так же разрешается весь хост указать маской *.
  3. Вне зависимости от наличия пути, хост завершается разделителем /: https://one.ru/, https://two.ru/path*;
  4. Путь опционален, маска * разрешается.

✅ Примеры рабочих паттернов:

https://domain.zone/path/*
https://*.site.com/path
https://*/path/
*://*/*

❌ Работать не будут:

https://domain.*/*
http*://domain.zone/
https://domain.zone
domain.zone

Будущие измененения

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

Если не обойтись без старого режима URL, можно использовать решение из книги рецептов.

Свойства JavaScript

  • Изолированная среда: если включена, то JS код запускается в изолированной среде, где JS контекст страницы недоступен, но доступен DOM.
  • Все фреймы: если включена, код будет внедряться во все фреймы. Каждый фрейм проверяется на соответствие изначальным URL отдельно.
  • Запускать на старте: Если включено, то скрипт внедряется до построения DOM, иначе после, но до загрузки ресурсов, таких как изображения и фреймы. Обратите внимание, что событие DOMContentLoaded в этом случае уже срабатывать не будет.

Свойства CSS

  • Программное подключение:
    • Включено: изначально низкий приоритет стилей, но максимальный при использовании !important. Доступен режим живого редактирования CSS. Можно использовать без "режима разработчика".
    • Выключено: более высокий приоритет стилей за счёт расположения <style/> в конце DOM. Недоступен режим живого редактирование CSS. Этот режим недоступен без "режима разработчика".
  • Автоматический !important: добавляет !important ко всем свойствам CSS в уже скомпилированный код.

Общие правила

"Общие правила" позволяют выстраивать зависимости между разными правилами и явно контролировать очерёдность их загрузки. Любое правило можно отметить как "общее" — это добавит его в список подключаемых модулей у остальных правил. Из подключаемых правил берётся только JS и CSS контент, остальные свойства подключаемого правила игнорируются.

Другие особенности

  • Маркер правила включено игнорируется в случае когда правило общее и подключается другим правилом;
  • Маркер сохранять в облако лишь указывает на включение правила в хранилище при синхронизации и не производит дополнительных действий;
  • Выбор синтаксиса препроцессора SASS или SCSS происходит автоматически, на основе наличия символов в {;} в коде.

Модули

К правилам можно подключать внешние JS и CSS модули, они запускаются до правил. Поддерживаются https://... ссылки, тип ресурса распознаётся по расширению.

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

Хранилище

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

Google Синхронизация

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

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