Manifest V3’te Web Uzantıları ile Global Nasıl Enjekte Edilir

In: Genel

Web uzantısı geliştirme dünyasına aşina olmayanlarınız için, Chrome ile bir fırtına geliyor. Google, web uzantılarının büyük çoğunluğunun kullandığı manifest sürüm 2 desteğini durduracaktır. Manifest sürüm 3 birçok değişiklik görüyor, ancak en büyük değişiklik kalıcı arka plan komut dosyalarından hizmet çalışanlarına geçiş. Bu…bir…büyük…değişim.

Bildirim sürümü 2’den sürüm 3’e yapılan değişiklikler şunları içerir:

  • Kalıcı arka plan komut dosyasından 5 dakika sonra ölebilecek bir hizmet çalışanına geçiş
  • kullanımı yok <iframe> hizmet çalışanından öğeler veya diğer DOM API’leri
  • Tüm API’ler Promise tabanlı hale geldi
  • CSP perspektifinden içerikle ilgili kısıtlamalar

Web uzantılarının sıklıkla kullandığı işlevlerden biri, her yeni sayfa yüklemesinde komut dosyalarını yürütmektir. MetaMask gibi bir web uzantısı için global bir window.ethereum dApp’lerin kullanması için. Peki bunu manifest sürüm 3 ile nasıl yaparız?

Chrome v102’den itibarengeliştiriciler bir tanımlayabilir world değeri olan mülk isolated veya main (sayfada) içerik komut dosyaları için. Geliştiriciler tanımlamalıdır content_scripts uzantısında manifest.json dosya, main value gerçekten yalnızca (bir Chrome hatası nedeniyle), onu hizmet çalışanından programlı olarak tanımladığınızda çalışır:

await chrome.scripting.registerContentScripts([
  {
    id: 'inpage',
    matches: ['http://*/*', 'https://*/*'],
    js: ['in-page.js'],
    runAt: 'document_start',
    world: 'MAIN',
  },
]);

Yukarıdaki örnekte, in-page.js her yeni sayfa yüklendiğinde ana içerik sekmesine enjekte edilir ve yürütülür. Bu in-page.js dosya kümeleri window.ethereum Tüm dApp’lerin kullanması için. Eğer world dır-dir undefined veya isolatedkomut dosyası yine de yürütülür, ancak bunu yalıtılmış bir ortamda yapar.

Manifest sürüm 3 çalışması oldukça zahmetli, bu yüzden lütfen en yakın uzantı geliştiricinize sarılın. Birçok büyük yapısal değişiklik var ve bu değişikliklerde gezinmek acımasız bir zorlama!


Bir cevap yazın

Ready to Grow Your Business?

We Serve our Clients’ Best Interests with the Best Marketing Solutions. Find out More

How Can We Help You?

Need to bounce off ideas for an upcoming project or digital campaign? Looking to transform your business with the implementation of full potential digital marketing?

For any career inquiries, please visit our careers page here.
[contact-form-7 404 "Bulunamadı"]