Wat is er nieuw in Chrome 116 voor extensies

Chrome 116 is nu beschikbaar als bètaversie en bevat veel spannende updates voor ontwikkelaars van Chrome-extensies. Laten we snel kijken naar wat er nieuw is.

Open programmatisch een zijpaneel

Sidepanel is een van de meest gevraagde functies in Chrome-extensies en is sinds versie 114 beschikbaar in Chrome. Na het lanceren van de Side Panel API was een van de eerste feedback die we ontvingen dat ontwikkelaars een manier wilden om programmatisch te openen een zijpaneel. En hier is hij dan: chrome.sidePanel.open is nu in bèta. U kunt het gebruiken om het zijpaneel van de extensie programmatisch te openen als reactie op een gebruikersinteractie, zoals klikken op het contextmenu:

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 });
  }
});

WebSocket-ondersteuning in Service Workers

WebSocket-ondersteuning is van cruciaal belang voor veel extensies die van plan zijn over te stappen naar Manifest V3. Chrome 116 verbetert de WebSocket-ondersteuning voor servicemedewerkers verder, omdat alle WebSocket-activiteiten de inactiviteitstimer van de servicemedewerkers van de jaren '30 opnieuw instellen. Dit betekent dat zolang uw WebSocket actief is, de servicemedewerker in leven blijft.

U kunt dit gebruiken om een ​​keepalive-mechanisme te implementeren dat ervoor zorgt dat uw servicemedewerker actief blijft terwijl u wacht op berichten van uw server - zelfs als het meer dan 30 seconden duurt voordat het volgende bericht binnenkomt:

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
  );
}

Bekijk onze nieuwe WebSocket- handleiding en voorbeeld voor meer details.

Sterke keepalive voor servicemedewerkers

Over de levenscyclus van servicemedewerkers gesproken: er is weer een belangrijke update geland: sterke keepalive voor API's die gebruikersinteractie vereisen. API's die een gebruikersinteractie vereisen, hebben 'sterke' keepalives voor medewerkers van de uitbreidingsservice (dat wil zeggen dat de medewerker langer dan 5 minuten aan deze taak kan besteden):

Audio en video opnemen op de achtergrond

Een ander gat tussen Manifest V2 en Manifest V3 is gedicht: je kunt audio en video op de achtergrond opnemen met behulp van tabCapture en offscreen-documenten. Gebruik de chrome.tabCapture API in een servicemedewerker om een ​​stream-ID te verkrijgen na een gebruikersgebaar. Dit kan vervolgens worden doorgegeven aan een document buiten het scherm om de opname te starten.

Bekijk onze bijgewerkte tabCapture handleiding om te leren hoe het werkt of bekijk het voorbeeld van Tab Capture - Recorder voor een werkend voorbeeld.

Nieuwe API: runtime.getContexts()

Met de nieuwe runtime.getContexts() API kunt u informatie ophalen over actieve contexten die aan uw extensies zijn gekoppeld. U kunt het bijvoorbeeld gebruiken om te controleren of er een actief offscreen-document is:

const existingContexts = await chrome.runtime.getContexts({});
const offscreenDocument = existingContexts.find(
    (c) => c.contextType === 'OFFSCREEN_DOCUMENT'
  );

Nieuwe reden buiten het scherm: GEOOCATION

geolocation is toegevoegd als een andere geldige reden voor het gebruik van een offscreen document . Bekijk onze handleiding over geolocatie voor meer informatie over hoe u de geografische locatie van de extensie kunt verkrijgen met behulp van de Offscreen API.

chrome.action.setBadgeText()

action.setBadgeText is bijgewerkt om een ​​inconsistentie tussen Manifest V2 en Manifest V3 op te lossen. Als u een lege tekenreeks of null doorgeeft aan action.setBadgeText wordt de badgetekst voor het opgegeven tabblad gewist en wordt in plaats daarvan standaard de algemene badgetekst gebruikt.

action.setBadgeText({tabId: tabId, text: ''});

Samenvatting: weer een stap richting Manifest V3

Met verbeterde levenslange ondersteuning voor Service Workers en de bijgewerkte TabCapture API zijn we vooruitgang blijven boeken in ons doel om de functiekloof tussen Manifest V2 en V3 te dichten. Bekijk onze pagina met bekende problemen voor de huidige status.