Как внедрить глобальные веб-расширения в Manifest V3

Для тех из вас, кто не знаком с миром разработки веб-расширений, с Chrome назревает буря. Google прекратит поддержку манифеста версии 2, которую использует подавляющее большинство веб-расширений. Версия манифеста 3 претерпевает множество изменений, но самое большое изменение связано с переходом от постоянных фоновых сценариев к рабочим процессам. Это… это… огромное… изменение.

Изменения манифеста версии 2 в версию 3 включают:

  • Переход от постоянного фонового сценария к рабочему сервису, который может умереть через 5 минут
  • Не использовать элементы <iframe> или другие API-интерфейсы DOM от сервис-воркера.
  • Все API стали основанными на промисах
  • Ограничения контента с точки зрения CSP

Одной из функций, которую часто используют веб-расширения, является выполнение скриптов при загрузке каждой новой страницы. Для веб-расширения, такого как MetaMask, нам нужно предоставить глобальный window.ethereum для использования dApps. Так как же нам это сделать с манифестом версии 3?

Начиная с Chrome v102 , разработчики могут определить свойство world со значением isolated или main (на странице) для сценариев содержимого. Хотя разработчики должны определять content_scripts в файле manifest.json расширения, main значение действительно работает (из-за ошибки Chrome), только когда вы программно определяете его из сервис-воркера:

  
ждите chrome.scripting.registerContentScripts([  
  {  
    идентификатор: «внутренняя страница»,  
    соответствует: ['http://*/*', 'https://*/*'],  
    js: ['in-page.js'],  
    runAt: 'document_start',  
    мир: 'ГЛАВНЫЙ',  
  },  
]);  

В приведенном выше примере in-page.js внедряется и выполняется на вкладке основного контента каждый раз при загрузке новой страницы. Этот файл in-page.js устанавливает window.ethereum для использования всеми приложениями dApp. Если world не undefined или isolated , сценарий все равно будет выполняться, но в изолированной среде.

Работа над манифестом версии 3 довольно утомительна, поэтому, пожалуйста, обнимите своего ближайшего разработчика расширений. Есть много огромных структурных изменений, и ориентироваться в этих изменениях — жестокий толчок!

Сообщение Как внедрить глобал с веб-расширениями в Manifest V3 впервые появилось в блоге Дэвида Уолша .

Leave a Comment

Ваш адрес email не будет опубликован.