Что нового в Chrome 120 для расширений

Chrome 120 теперь доступен в бета-версии и включает множество интересных обновлений для разработчиков расширений Chrome.

Этот год выдался насыщенным для команды Chrome Extensions. Вчерашний релиз бета-версии Chrome 120 ознаменовал собой ещё один большой шаг вперёд в развитии платформы расширений. Обзор событий этого года можно найти в наших ежеквартальных отчётах за июль и октябрь . Читайте далее о новых возможностях Chrome 120 для расширений.

Устранение разрыва между платформами

С выпуском Chrome 120 мы устраним оставшиеся пробелы в платформе, перечисленные на странице известных проблем Manifest V3 . Новый API UserScript и поддержка обработки файлов в ChromeOS — два оставшихся пункта в списке, которые мы теперь можем вычеркнуть. В сочетании с изменениями, описанными в предыдущем квартальном отчёте, мы очень довольны текущим состоянием платформы расширений Chrome и нашими достижениями за последний год.

Новый API пользовательских скриптов

Реализована поддержка пользовательских скриптов! Пользовательские скрипты — это (обычно относительно небольшие) фрагменты кода, которые расширения могут внедрять в веб-страницы для изменения их внешнего вида или поведения. Они могут быть созданы непосредственно пользователем или найдены в различных репозиториях пользовательских скриптов в Интернете. Начиная с версии Chrome 120 Manifest V3, расширения могут управлять коллекцией пользовательских скриптов и определять, когда и как внедрять их на веб-страницы.

Поддержка пользовательских скриптов в Manifest V2 и Manifest V3 имеет одно существенное различие. Поскольку пользовательские скрипты обладают высокой эффективностью и требуют высокого уровня доверия к их автору, команда Chrome решила, что пользователи должны включить режим разработчика, прежде чем смогут запускать пользовательский скрипт.

Страница расширений
Страница расширений (chrome://extensions)

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

Пример процесса адаптации для пользовательских сценариев.
Встроенные пользователи при отключенном режиме разработчика.

Для начала ознакомьтесь с документацией или взгляните на официальный пример .

Более высокие статические ограничения набора правил DNR

Мы значительно увеличили лимит включенных статических наборов правил — с 10 до 50. Кроме того, мы увеличили общее количество разрешенных статических наборов правил — с 50 до 100. Это сделано в ответ на отзывы, полученные нами в группе сообщества Web Extensions.

Новый API ReadingList

В Chrome список для чтения появился в 2021 году. В прошлом году команда Chrome сделала доступ к нему ещё проще через боковую панель. В версии Chrome 120 мы добавляем возможность создавать, читать, обновлять и удалять записи в списке для чтения с помощью расширений Chrome. Чтобы узнать больше, ознакомьтесь с документацией по API и нашим новым примером .

Список чтения Chrome, отображающий страницы документации расширений.
Боковая панель списка чтения в Chrome.

Обработка файлов в ChromeOS

Функция обработки файлов позволяет расширениям открывать файлы с заданными типами MIME и расширениями аналогично работе с файлами на веб-платформах. Подробнее об использовании этой функции читайте в статье «Обработка файлов в ChromeOS» .

Скриншот диалогового окна открытия файла с расширением в ChromeOS
Открывайте файлы в расширении на ChromeOS.

Включить сигнал тревоги через 30 секунд

Это небольшое обновление, но оно устраняет важный пробел в жизненном цикле сервис-воркера. В связи с тем, что сервис-воркеры основаны на событиях, в будущем для запуска события рекомендуется использовать chrome.alarms . API будильников гарантирует, что событие будет запущено, даже если сервис-воркер завершит работу.

Однако есть одна загвоздка. До Chrome 120 минимальный промежуток времени для срабатывания будильника составлял одну минуту. Однако сервис-воркеры завершали работу через 30 секунд бездействия. Поэтому не было простого способа запланировать срабатывание будильника через 45 секунд, поскольку при использовании setTimeout() для установки события через 45 секунд сервис-воркер потенциально мог завершить работу до срабатывания события.

Начиная с Chrome 120 вы можете запустить событие в:

  • менее 30 секунд при использовании setTimeout() .
  • все, что длиннее или равно 30 секундам, с использованием chrome.alarms :
await chrome.alarms.create('demo-default-alarm', {
   periodInMinutes: 0.45
 });

Краткое содержание

Мы очень рады прогрессу платформы расширений за последний год. Chrome 120 — это ещё один большой шаг вперёд с увеличением лимитов DNR и поддержкой пользовательских скриптов.