Uzantı hizmeti çalışanları hem standart hizmet çalışanı etkinliklerini hem de uzantı API'lerindeki birçok etkinliği destekler. Bu bölümde, kullanabileceğiniz özellikler açıklanmakta ve bunları kullanmayla ilgili ipuçları verilmektedir.
Uzantı etkinlikleri bildirme
Service Worker'lardaki etkinlik işleyicilerin global kapsamda tanımlanması gerekir. Diğer bir deyişle, komut dosyasının en üst düzeyinde olmaları ve işlevlerin içine yerleştirilmemeleri gerekir. Bu, ilk komut dosyası yürütme sırasında eşzamanlı olarak kaydedilmelerini sağlar. Böylece Chrome, etkinlikleri başlar başlamaz hizmet çalışanına gönderebilir. Örneğin:
chrome.storage.local.get(["badgeText"], ({ badgeText }) => { chrome.action.setBadgeText({ text: badgeText }); chrome.action.onClicked.addListener(handleActionClick); });
chrome.action.onClicked.addListener(handleActionClick); chrome.storage.local.get(["badgeText"], ({ badgeText }) => { chrome.action.setBadgeText({ text: badgeText }); });
Genel etkinlikler
Uzantı hizmeti çalışanları, belirli API'lerdeki etkinlikleri destekler. Yaygın nedenlerden bazıları aşağıda açıklanmıştır. Bu API'lerden bazılarının kullanım izni gerektirdiğini, bazılarınınsa Chrome'un tüm sürümlerinde bulunmayan etkinlik, yöntem veya mülklere sahip olabileceğini hatırlatmak isteriz. Ayrıntılar için bağlantılı API dokümanlarına (özellikle de kullanmak istediğiniz etkinlikler, yöntemler veya özellikler) bakın.
chrome.action
- İster belirli bir sayfa (sekme) ister uzantının tamamı olsun, uzantının araç çubuğu simgesiyle kullanıcı etkileşimi sonucunda tetiklenir.
chrome.management
- Uzantıları yükleme, kaldırma, etkinleştirme ve devre dışı bırakma ile ilgili etkinlikler sağlar.
chrome.notifications
- Kullanıcının, uzantı tarafından oluşturulan sistem bildirimleriyle etkileşimiyle ilgili etkinlikleri sağlar.
chrome.permissions
- Uzantı izinlerinin kullanıcı tarafından ne zaman verildiğini veya iptal edildiğini belirtir.
chrome.runtime
- Uzantı yaşam döngüsüyle ilgili etkinlikleri, uzantının diğer bölümlerinden gönderilen mesajları ve kullanılabilir bir uzantı ya da Chrome güncellemesiyle ilgili bildirimleri sağlar.
chrome.storage.onChanged
- Herhangi bir
StorageArea
nesnesi silindiğinde veya bir anahtarın değeri değiştirildiğinde ya da ayarlandığında etkinleşir. HerStorageArea
örneğinin kendionChanged
etkinliği olduğunu unutmayın. chrome.webNavigation
- Uçuş sırasındaki navigasyon isteklerinin durumu hakkında bilgi verir.
Filtreler
Etkinlikleri belirli bir kullanım alanıyla kısıtlamak veya gereksiz etkinlik çağrılarını ortadan kaldırmak için etkinlik filtrelerini destekleyen API'leri kullanın. Örneğin, kullanıcının belirli bir web sitesine gittiğinde bunu algılamak için tabs.onUpdated
etkinliğini dinleyen bir uzantı kullanabilirsiniz. Bu etkinlik, her sekmedeki her gezinmede çağrılır. Bunun yerine, bir filtreyle webNavigation.onCompleted
kullanın. Örneğin:
const filter = {
url: [
{
urlMatches: 'https://www.google.com/',
},
],
};
chrome.webNavigation.onCompleted.addListener(() => {
console.info("The user has loaded my favorite website!");
}, filter);
Web Service Worker etkinlikleri
Uzantı hizmet çalışanları, başka bir yerde açıklanan yaşam döngüsü olaylarından daha fazlasını destekler.
ServiceWorkerGlobal.fetch
Uzantı paketinden herhangi bir şey alındığında veya bir uzantıdan ya da pop-up komut dosyasından fetch()
ve XMLHttpRequest()
çağrıldığında tetiklenir. (İçerik komut dosyalarından gelen çağrılar, hizmet çalışanı fetch
işleyicisi tarafından müdahale edilmez.) İkinci durumlarda, getirmek istediğiniz sayfaların URL'lerini manifest.json
içindeki "host_permissions"
anahtarına eklemeniz gerekir.
ServiceWorkerGlobal.message
Uzantı mesajlaşma aktarımına ek olarak hizmet çalışanı mesaj iletme özelliği de kullanılabilir ancak iki sistem birlikte çalışmaz. Bu, çeşitli uzantı API'lerinden erişilebilen sendMessage()
kullanılarak gönderilen iletilere Service Worker mesaj işleyicileri tarafından müdahale edilmediği anlamına gelir. Benzer şekilde, postMessage()
kullanılarak gönderilen iletilere de uzantı mesaj işleyicileri tarafından müdahale edilmez. Uzantı hizmet çalışanları, her iki mesaj işleyici türü de (yani hem ServiceWorkerGlobal.message
hem de chrome.runtime.onMessage
) desteklenir.
Hizmet çalışanı mesajlarını kullanmak için belirli bir nedeniniz yoksa uzantı mesajlaşmasını tercih etmelisiniz.