Chrome 116'nın beta sürümü yayınlandı. Bu sürümde, Chrome uzantısı geliştiricileri için birçok heyecan verici güncelleme yer alıyor. Yeniliklere hızlıca göz atalım.
Bir yan paneli programatik olarak açma
Yan panel, Chrome uzantılarında en çok istenen özelliklerden biri olmuştur ve Chrome 114 sürümünden beri kullanılmaktadır. Yan Panel API'yi kullanıma sunduktan sonra aldığımız ilk geri bildirimlerden biri, geliştiricilerin yan paneli programatik olarak açmak istediği yönündeydi. chrome.sidePanel.open
artık beta sürümünde. Bu API'yi, bağlam 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 });
}
});
Service Worker'larda WebSocket desteği
WebSocket desteği, Manifest V3'e geçmeyi planlayan birçok uzantı için kritik öneme sahiptir. Chrome 116, tüm WebSocket etkinliği 30 saniyelik hizmet çalışanı boşta kalma zamanlayıcısını sıfırlayacağından hizmet çalışanlarında WebSocket desteğini daha da iyileştirir. Bu nedenle, WebSocket'iniz etkin olduğu sürece hizmet çalışanı çalışmaya devam eder.
Bunu, sunucunuzdan mesaj gelmesini beklerken hizmet çalışanınızın etkin kalmasını sağlayan bir canlı tutma mekanizması uygulamak için kullanabilirsiniz. Bir sonraki mesajın gelmesi 30 saniyeden uzun sürse bile hizmet çalışanınız etkin kalır:
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.
2
0 * 1000
);
}
Daha fazla bilgi için yeni WebSocket kılavuzumuza ve örneğimize göz atın.
Service Worker'lar için güçlü keepalive
Service worker yaşam döngüsünden bahsetmişken, kullanıcı etkileşimi gerektiren API'ler için önemli bir güncelleme daha yayınlandı: güçlü keepalive. Kullanıcı etkileşimi gerektiren API'ler, uzantı hizmeti çalışanları için "güçlü" keepalive'lara sahip olur (ör. çalışanın bu görevde 5 dakikadan uzun süre çalışmasına izin verilir):
permissions.request()
desktopCapture.chooseDesktopMedia()
identity.launchWebAuthFlow()
management.uninstall()
Arka planda ses ve video kaydetme
Manifest V2 ile Manifest V3 arasındaki bir boşluk daha kapatıldı: tabCapture
ve ekran dışı dokümanları kullanarak arka planda ses ve video kaydedebilirsiniz. Kullanıcı hareketi sonrasında yayın kimliği almak için bir hizmet çalışanında chrome.tabCapture
API'yi kullanın. Bu daha sonra kayıt başlatmak için bir ekran dışı dokümana iletilebilir.
Nasıl çalıştığını öğrenmek için güncellenen tabCapture
kılavuzumuza göz atın. Çalışan bir örnek için Tab Capture - Recorder örneğine bakın.
Yeni API: runtime.getContexts()
Yeni runtime.getContexts()
API, uzantılarınızla ilişkili etkin bağlamlar hakkında bilgi almanıza olanak tanır. Örneğin, ekranda görünmeyen etkin bir doküman olup olmadığını kontrol etmek için bu özelliği kullanabilirsiniz:
const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
(c) => c.contextType === 'OFFSCREEN_DOCUMENT
9;
);
Yeni ekran dışı kalma nedeni: GEOLOCATION
geolocation
, ekran dışı doküman kullanmak için geçerli bir neden olarak eklendi. Offscreen API'yi kullanarak uzantının coğrafi konumunu elde etme hakkında daha fazla bilgi edinmek için coğrafi konum 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. null
işlevine boş bir dize veya null
iletmek, belirtilen sekmenin rozet metnini temizler ve bunun yerine varsayılan olarak genel rozet metnini kullanır.action.setBadgeText
action.setBadgeText({tabId: tabId, text: '
39;});
Özet: Manifest V3'e doğru bir adım daha
Geliştirilmiş Service Worker ömrü desteği ve güncellenmiş TabCapture API ile Manifest V2 ve V3 arasındaki özellik farkını kapatma hedefimize yönelik ilerleme kaydetmeye devam ettik. Mevcut durum için bilinen sorunlar sayfamıza göz atın.