Het recht "activeTab" geeft een extensie tijdelijk toegang tot het op dat moment actieve tabblad als de gebruiker de extensie aanroept, bijvoorbeeld door op de actie te klikken. De toegang tot het tabblad duurt zolang de gebruiker op die pagina is en wordt ingetrokken als de gebruiker weggaat of het tabblad sluit.
Als de gebruiker de extensie bijvoorbeeld aanroept op https://example.com en daarna naar https://example.com/foo gaat, heeft de extensie nog steeds toegang tot de pagina. Als de gebruiker naar https://chromium.org gaat, wordt de toegang ingetrokken.
Dit is een alternatief voor veel toepassingen van "<all_urls>", maar er wordt geen waarschuwingsbericht getoond tijdens de installatie:
Zonder "activeTab":

Met "activeTab":

Er wordt geen toegang verleend tot beperkte pagina's, zoals chrome://-pagina's.
Voorbeeld
Bekijk de voorbeeldextensie Page Redder:
manifest.json:
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab",
"scripting"
],
"background": {
"service_worker": "service-worker.js"
},
"action": {
"default_title": "Make this page red"
},
"manifest_version": 3
}
service-worker:
function reddenPage() {
document.body.style.backgroundColor = 'red';
}
browser.action.onClicked.addListener((tab) => {
// If the tab URL is not set, it is a restricted page.
if (tab.url) {
browser.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
Motivatie
Overweeg een extensie voor webclipping met een actie en een contextmenu-item. Deze extensie heeft misschien alleen toegang tot tabbladen nodig als er op de actie wordt geklikt of als het contextmenu-item wordt uitgevoerd.
Zonder "activeTab" zou deze extensie volledige, permanente toegang tot elke website moeten aanvragen,
alleen maar om het werk te kunnen doen als de gebruiker de extensie aanroept. Dat is veel macht om toe te vertrouwen aan zo'n eenvoudige extensie. En als de extensie ooit wordt gehackt, krijgt de aanvaller toegang tot alles wat de extensie had.
Een extensie met het recht "activeTab" krijgt daarentegen alleen toegang tot een tabblad als reactie op een expliciete gebruikersactivatie. Als de extensie is gehackt, moet de aanvaller wachten tot de gebruiker de extensie aanroept voordat deze toegang krijgt. En die toegang duurt alleen totdat het tabblad wordt genavigeerd of gesloten.
Wat activeTab toestaat
Als het recht "activeTab" aanstaat voor een tabblad, kan een extensie het volgende doen:
- Roep
scripting.insertCSS()ofscripting.executeScript()aan op dat tabblad als het"scripting"-recht ook is gedefinieerd (zoals in het voorbeeld hierboven). - De URL, titel en favicon voor dat tabblad ophalen via een API die een
tabs.Tab-object retourneert (in wezen verleent"activeTab"tijdelijk hostrechten). - Onderschep netwerkverzoeken in het tabblad naar de oorsprong van het hoofdframe van het tabblad met de webRequest API. De extensie krijgt tijdelijk hostrechten voor de oorsprong van het hoofdframe van het tabblad.
activeTab aanroepen
De volgende gebruikersactivaties zetten het recht "activeTab" aan:
- Een actie uitvoeren
- Een contextmenu-item uitvoeren
- Een sneltoets uitvoeren vanuit de commands API
- Een suggestie van de omnibox API accepteren