Manifest V3'teki Dokümanların Ekran Dışı

Ian Stanion
Ian Stanion

Geliştiriciler, arka plan sayfalarından uzantı hizmet çalışanlarına geçişteki işlevleri değiştirmek için Chrome 109'dan itibaren chrome.offscreen API'sini ve manifest iznini kullanabilir. Bu iznin istenmesi, kullanıcıları rahatsız eden yeni pencereler veya sekmeler açmadan DOM API'lerini kullanmak için ekran dışı dokümanlar oluşturulmasına olanak tanır. chrome.offscreen API artık Chrome uzantılarında kullanılabilir.

Chromium'da, Manifest V3 uzantıları hizmet çalışanı tabanlıdır, ancak hizmet çalışanları tam doküman tabanlı sayfaların (arka plan ve etkinlik sayfaları dahil) sağladığı API'ler ve mekanizmalar için destek sağlamaz. Buna ek olarak, web sayfalarında DOM API'lerine erişmek için içerik komut dosyalarını kullanmak uzantıyı sayfa sayfa farklı içerik güvenliği politikalarının infazına bırakır. Bu sorunu çözmeye yardımcı olmak için Manifest V3 uzantılarının, çalışma zamanında özel bir API üzerinden minimum düzeyde, kapsamlı ve nispeten izin verilmeyen ekran dışı dokümanları açmasına olanak tanıyarak DOM ile ilgili özellikleri ve API'leri desteklemek üzere Ekran Dışı Belgeler'i kullanıma sunuyoruz.

Özellik Bilgileri

Ekran dışı dokümanlar, özellikle hizmet çalışanları tarafından desteklenmeyen kullanım alanlarını (örneğin, ses çalma) ele almak üzere tasarlandığından bu sayfanın kullanım ömrü ve verilecek izinler, uzantı hizmet çalışanının ömründen ayrıdır. Sayfa, işlem yapmayı durdurduğunda bozulacağından Manifest V2'deki etkinlik sayfalarına benzer bir ömür boyu mekanizmaya sahiptir. Ayrıca kullanıcı aracısı, belirtilen amaca özel kullanım ömrüne daha fazla kısıtlama uygulayabilir. Ekran dışı dokümanlar, yalnızca DOM API'lerinin erişebildiği API'lerdeki boşlukları doldurmak için tasarlanmıştır; bu nedenle uzantı API'lerinin doğrudan bu bağlamda sunulması gerekmez. Uzantıların "arka plan sayfası değiştirme" olarak bunları kullanma olasılığını azaltmak için ekran dışı dokümanda yalnızca chrome.runtime mesajlaşma API'leri gösterilir. (Geliştiriciler, hizmet çalışanları aracılığıyla ekran dışı dokümanı İstemci olarak talep ederek web mesajlaşma özelliğini de kullanabilir.) Bazı kullanım örnekleri (özellikle de site toplama) çapraz kaynak çerçevelerine erişim gerektirdiğinden, bu dokümanların, şu anda uzantı sayfalarının sahip olduğu kurallara uygun olarak çapraz kaynak çerçeveleri yerleştirmesine izin veriyoruz. Ekran dışı dokümanlarda, uzantı tarafından belirtilen içerik komut dosyaları, gerekli içeriği kopyalamak için normal web sayfalarında olduğu gibi bu çerçevelerde çalışabilir.

Nedenler ve amaç gerekliliği

Ekran dışı doküman oluşturmak için, belirtilen nedenler ve daha fazla gerekçe gerekir. Bu nedenler, API referans belgelerinde listelenmiştir ve belgenin kullanım süresini farklı şekillerde ele alır. Örneğin, ses çalma için açılmış olan bir dokümanın kullanım ömrü, pano yönetimi için açılan dokümandan farklı kurallara sahiptir. Gerekçeye ekran dışı dokümanın amacı hakkında daha fazla ayrıntı da ekleyebilirsiniz. Gerekçe, geliştirici tarafından yazılan bir dizedir ve doküman üzerinde etkisi olan bir parametre değildir. Geliştiriciler geri bildirimlerini ve kullanım alanlarını paylaştıkça API'ye zaman içinde başka nedenler de eklenebilir.

Geleceğe doğru

Uygulama kolaylığı için bu API'nin ilk sürümü, aynı anda profil ve uzantı başına yalnızca bir sayfayı destekler. Gelecekteki sürümlerde, birden fazla sayfayı destekleyecek şekilde bunu gevşetebiliriz. Şu anda, uzantı etkin bir gizli profille bölünmüş modda çalışıyorsa, hem normal hem de gizli profillerin her birinin tek bir ekran dışı dokümanı olabilir. Uzantı çalışanı DOM işlevinin daha sonra da sunulması planlanmaktadır. Ekran dışı API'yi kullanan işlevleri, daha sonraki bir tarihte değiştirmek üzere Service Worker'daki eşdeğer bir yorum işleviyle eşleyerek uzantılarınızı "geleceğe hazır hale getirebilirsiniz".

// Solution 1 - Service workers cannot directly interact with
// the system clipboard. To work around this, we'll create an offscreen
// document and pass the data we want to write to the clipboard.
async function addToClipboard(value) {
    await chrome.offscreen.createDocument({
      url: 'offscreen.html',
      reasons: [chrome.offscreen.Reason.CLIPBOARD],
      justification: 'Write text to the clipboard.',
    });
  }


// Solution 2 – Once extension service workers can use the Clipboard API,
// replace the offscreen document based implementation with something like this
async function addToClipboardV2(value) {
  navigator.clipboard.writeText(value);
}

Ayrıca, Service Worker'a DOM işlevi ve API'lar eklendikçe, hizmet çalışanının mevcut durumuna ve ekran dışı dokümanların kullanılma nedenlerine bağlı olarak doküman oluşturmak için nedenler listesi de eklenir veya kısaltılır.

Sonuç

Ekran Dışı Dokümanlar, şu anda Service Worker'lardan erişilemeyen, DOM veya pencere etkileşimi erişimi gerektiren uzantılara izin verir. Ayrıca yeni kullanım alanlarının eklenebileceği ve gelecekte çözülebilecek kullanım alanlarının kaldırılabileceği esnek bir yaklaşım sunar. Uzantılar, belirli kullanım alanları için önerilen ekran dışı doküman API'sini kullanmalı ve uzantının birincil arka plan bağlamı, manifestte belirtilen hizmet çalışanı olarak kalmalıdır. Ekran dışı doküman, API erişimi sınırlı olduğundan birincil uzantı mantığının depolanacağı yer olmamalıdır. Ekran dışındaki bir dokümanın kullanım süresi, onu oluşturan hizmet çalışanından bağımsızdır. Uzantılarda hizmet çalışanının ömrüyle ilgili hizmet çalışanı yaşam boyu değerlendirmeleri ve kullanım alanları ayrı bir blog yayınında ele alınacaktır. Özellikler ve API'ler Service Worker'a eklendikçe ekran dışı dokümanları kullanma nedenleri zaman içinde değişiklik gösterir. Bu süreç ilerledikçe geliştiricilerden geri bildirim almak için sabırsızlanıyoruz.

Fotoğraf: Kari Shea'nin Unsplash'ta