Gepubliceerd: 19 november 2024
Op Google I/O 2024 hebben we enkele vroege ontwerpen gedeeld voor aanstaande wijzigingen in het extensiemenu, waardoor gebruikers meer controle krijgen over de sites waartoe extensies toegang hebben. We gaan binnenkort beginnen met het testen van deze wijzigingen, te beginnen met een klein percentage van de gebruikers in Canarische Eilanden en in de hoop ze in de toekomst breder uit te rollen.
Toen we in het verleden met ontwikkelaars over deze verandering spraken, hoorden we vaak zorgen over de impact van het veranderen van de manier waarop extensies hostrechten kunnen aanvragen tijdens de installatie. Het nieuwe menu heeft geen invloed op het standaardgedrag. Extensies krijgen tijdens de installatie nog steeds toegang tot alle aangevraagde hosts. Het doel van deze wijzigingen is om het voor gebruikers gemakkelijker te maken om besturingselementen te ontdekken die al beschikbaar zijn.
Dit bericht geeft een overzicht van wat u kunt verwachten en hoe u uw extensies kunt voorbereiden met een nieuwe API om gevallen af te handelen waarin de toegang tot een pagina door de gebruiker is onthouden.
Wat verandert er?
Om gebruikers meer controle te geven, introduceren we een nieuw extensiemenu. Extensies krijgen tijdens de installatie nog steeds toegang tot alle aangevraagde hosts, maar gebruikers kunnen nu op een eenvoudigere manier de toegang per extensie beheren.
Het nieuwe menu (afgebeeld met het huidige ontwerp dat mogelijk verandert) laat duidelijker zien welke extensies op een pagina kunnen worden uitgevoerd, en geeft gebruikers de mogelijkheid om de toegang te wijzigen als ze daarvoor kiezen. Een gebruiker kan ook voorkomen dat alle extensies op een specifieke site worden uitgevoerd. Zoals gezegd verandert geen van de beschikbare instellingen of standaardinstellingen. We zijn erop gericht om wat we al hebben gemakkelijker te maken voor gebruikers om te ontdekken.
Voeg een verzoek voor sitetoegang toe
We hebben een nieuwe API ontworpen om deze veranderingen aan te vullen, met aanzienlijke input van andere browsers en ontwikkelaars in de WebExtensions Community Group .
Als een gebruiker de toegang tot een pagina heeft onthouden, kunnen extensies nu toegang aanvragen met behulp van de nieuwe permissions.addSiteAccessRequest
API. Wanneer een extensie dit doet, ziet de gebruiker een bericht "Toestaan" naast het puzzelstukje van de extensie in de werkbalk. Hier is een ontwerp dat we onderzoeken:
Wanneer een gebruiker op "Toestaan" klikt in het extensiemenu, krijgt de extensie permanente toegang tot de host. De gebruiker kan het in de toekomst opnieuw inhouden door naar het extensiemenu te gaan of op de chrome://extensions-pagina. Klik op 'Toestaan 1?' binnen de werkbalk biedt een snellere manier om onmiddellijke toegang te verlenen.
Extensies kunnen permissions.addSiteAccessRequest
aanroepen met een tabId
om een toestemmingsverzoek voor dat tabblad weer te geven. U kunt functiedetectie gebruiken om deze vandaag nog veilig in uw extensie te gebruiken. De API zal niets doen voor gebruikers zonder het nieuwe menu, maar het adopteren ervan zal gebruikers met het nieuwe menu ten goede komen, aangezien het geleidelijk wordt uitgerold.
chrome.tabs.onUpdated.addListener(async (tabId, changes) => {
if (typeof changes.url !== 'string') return;
const url = new URL(changes.url);
// If we are on the /checkout page of example.com.
if (url.origin === 'https://example.com' && url.pathname === '/checkout') {
const hasPermission = await chrome.permissions.contains({
origins: ['https://example.com/*']
});
// We already have host permissions.
if (hasPermission) {
return;
}
// Add a site access request if the API is available.
if (chrome.permissions.addSiteAccessRequest) {
chrome.permissions.addSiteAccessRequest({ tabId });
}
}
});
In dit voorbeeld voegen we alleen een verzoek toe als de gebruiker zich op de /checkout
pagina bevindt. Je kunt de volledige code bekijken in onze chrome-extensions-samples-repository.
Extensies moeten er rekening mee houden wanneer gebruikers om toegang moeten worden gevraagd. Het is waarschijnlijker dat gebruikers luidruchtige verzoeken negeren en Chrome kan buitensporige verzoeken afremmen. Een gebruiker kan er ook voor kiezen om de mogelijkheid voor een extensie om verzoeken weer te geven uit te schakelen. Daarom moet u alleen in specifieke situaties om toegang vragen, wanneer u er zeker van bent dat de gebruiker gebruik wil maken van uw extensie.
Verzoeken zijn gebonden aan een specifiek tabblad en worden automatisch gewist wanneer een gebruiker naar een andere oorsprong navigeert. Er is een overeenkomstige methode removeSiteAccessRequest
beschikbaar om een verzoek expliciet te wissen (bijvoorbeeld als een verzoek aan een bepaald pad is gebonden).
Omdat deze API is gekoppeld aan het nieuwe extensiemenu, worden oproepen genegeerd als het nieuwe menu niet is ingeschakeld. We raden u echter aan om de API vandaag nog uit te proberen en te overwegen deze in uw extensie te gebruiken. U zorgt voor een geweldige gebruikerservaring, aangezien de nieuwe menuwijzigingen geleidelijk zichtbaar worden voor meer gebruikers.
Raadpleeg de machtigingsdocumentatie voor meer informatie over het werken met optionele machtigingen.
Probeer het eens
De API is standaard ingeschakeld in Chrome 133.0.6838.0 en hoger (momenteel in Chrome Canary). Om het nieuwe menu in te schakelen, schakelt u op chrome://flags de vlag 'Extensiesmenutoegangsbeheer' in.
Ter herinnering: dit is nog steeds werk in uitvoering en kan blijven evolueren en veranderen. We raden aan om te testen in Chrome Canary om de meest up-to-date ervaring te zien.
U kunt feedback achterlaten over het nieuwe ontwerp in de mailinglijst met chroomextensies , die we in gedachten zullen houden terwijl we aan het nieuwe menu blijven werken.