Chrome 116 şu anda beta sürümündedir ve Chrome Uzantısı geliştiricileri için birçok heyecan verici güncelleme içerir. Yeniliklere hızlıca göz atalım.
Yan paneli programatik olarak açma
Yan panel, Chrome uzantılarında en çok istenen özelliklerden biri olmuştur ve Chrome'da 114 sürümünden beri kullanılmaktadır. Yan Panel API'sini kullanıma sunduktan sonra aldığımız ilk geri bildirimlerden biri, geliştiricilerin yan paneli programlı bir şekilde açmanın bir yolunu istedikleri yönündeydi. chrome.sidePanel.open
artık beta sürümünde. Bunu, içerik menüsü tıklaması gibi bir kullanıcı etkileşimine yanıt olarak uzantı yan panelini programatik olarak açmak için kullanabilirsiniz:
chrome.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === 'openSidePanel') {
// This will open the panel in all the pages on the current window.
chrome.sidePanel.open({ windowId: tab.windowId });
}
});
Hizmet Çalışanlarında WebSocket desteği
WebSocket desteği, Manifest V3'e geçmeyi planlayan birçok uzantı için kritik öneme sahiptir. Tüm WebSocket etkinlikleri, 30 sn. hizmet çalışanı boşta kalma zamanlayıcısını sıfırladığından Chrome 116, hizmet çalışanlarında WebSocket desteğini daha da iyileştiriyor. Bu, WebSocket'iniz etkin olduğu sürece hizmet çalışanının kullanımda kalacağı anlamına gelir.
Bunu, sunucunuzdan gelen iletileri beklerken (bir sonraki iletinin gelmesi 30 saniyeden fazla sürse bile) hizmet çalışanınızın etkin kalmasını sağlayan bir keepalive mekanizması uygulamak için kullanabilirsiniz:
function keepAlive() {
const keepAliveIntervalId = setInterval(
() => {
if (webSocket) {
webSocket.send('keepalive');
} else {
clearInterval(keepAliveIntervalId);
}
},
// It's important to pick an interval that's shorter than 30s, to
// avoid that the service worker becomes inactive.
20 * 1000
);
}
Daha fazla ayrıntı için yeni WebSocket kılavuzumuza ve örnekmize göz atın.
Hizmet Çalışanları için güçlü canlı tutma
Service Worker'ın yaşam döngüsünden bahsetmişken önemli bir güncelleme daha sunulmuştur: Kullanıcı etkileşimi gerektiren API'ler için güçlü keepalive. Kullanıcı etkileşimi gerektiren API'lerin, uzantı hizmeti çalışanları için "güçlü" keepalive'ları olur (ör. çalışanın bu görevde 5 dakikadan fazla çalışmasına izin verir):
permissions.request()
desktopCapture.chooseDesktopMedia()
identity.launchWebAuthFlow()
management.uninstall()
Arka planda ses ve video kaydediliyor
Manifest V2 ile Manifest V3 arasındaki bir boşluk daha da kapatıldı: tabCapture
özelliğini ve ekran dışı dokümanları kullanarak arka planda ses ve video kaydedebilirsiniz. Kullanıcı hareketinin ardından akış kimliği almak için Service Worker'da chrome.tabCapture
API'yi kullanın. Bu veri, daha sonra kaydı başlatmak için ekran dışındaki bir dokümana aktarılabilir.
Nasıl çalıştığını öğrenmek için güncellenmiş tabCapture
kılavuzumuza göz atın veya çalışan bir örnek için Sekme Yakalama - Kaydedici örneğine bakın.
Yeni API: schedule.getContexts()
Yeni runtime.getContexts()
API'si, uzantılarınızla ilişkilendirilmiş etkin bağlamlar hakkında bilgi getirmenize olanak tanır. Örneğin, etkin bir ekran dışı doküman olup olmadığını kontrol etmek için bunu kullanabilirsiniz:
const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
(c) => c.contextType === 'OFFSCREEN_DOCUMENT'
);
Yeni ekran dışı neden: GEOLOCATION
geolocation
, ekran dışı doküman kullanmak için başka bir geçerli neden olarak eklendi. Offscreen API'yi kullanarak uzantının coğrafi konumunu nasıl alacağınız hakkında daha fazla bilgi edinmek için coğrafi konumu kullanma kılavuzumuza göz atın.
chrome.action.setBadgeText()
action.setBadgeText
, Manifest V2 ile Manifest V3 arasındaki tutarsızlığı gidermek için güncellendi. action.setBadgeText
öğesine boş bir dize veya null
geçirildiğinde, belirtilen sekmeye ait rozet metni silinir ve bunun yerine varsayılan olarak global rozet metni kullanılır.
action.setBadgeText({tabId: tabId, text: ''});
Özet: Manifest V3'e doğru bir adım daha
Hizmet Çalışanı için iyileştirilmiş yaşam boyu destek ve güncellenen TabCapture API ile Manifest V2 ile V3 arasındaki özellik boşluğunu kapatma hedefimiz doğrultusunda ilerleme kaydetmeye devam ettik. Mevcut durum için bilinen sorunlar sayfamıza göz atın.