De activeTab
machtiging geeft een extensie tijdelijke toegang tot het momenteel actieve tabblad wanneer de gebruiker de extensie aanroept , bijvoorbeeld door op de browseractie te klikken. De toegang tot het tabblad duurt zolang de gebruiker zich op die pagina bevindt, en wordt ingetrokken wanneer de gebruiker weg navigeert of het tabblad sluit.
Dit dient als alternatief voor veel gebruik van <all_urls>
, maar geeft tijdens de installatie geen waarschuwingsbericht weer:
Let op: Vanaf M72 wordt de activeTab
machtiging verleend totdat de gebruiker naar een andere oorsprong navigeert. Dat wil zeggen dat als de gebruiker de extensie op https://example.com aanroept en vervolgens naar https://example.com/foo navigeert, de extensie toegang blijft houden tot de pagina. Als de gebruiker naar https://chromium.org navigeert, wordt de toegang ingetrokken.
Zonder activeTab
:
Met activeTab
:
Voorbeeld
Bekijk de voorbeeldextensie Page Redder :
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "Make this page red"
},
"manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
// No tabs or host permissions needed!
console.log('Turning ' + tab.url + ' red!');
chrome.tabs.executeScript({
code: 'document.body.style.backgroundColor="red"'
});
});
Motivatie
Overweeg een webknipselextensie met een browseractie en een contextmenu-item . Het kan zijn dat deze extensie alleen daadwerkelijk toegang tot tabbladen nodig heeft wanneer op de browseractie wordt geklikt of wanneer het contextmenu-item wordt uitgevoerd.
Zonder activeTab
zou deze extensie volledige, permanente toegang tot elke website moeten aanvragen, zodat deze zijn werk zou kunnen doen als de gebruiker er toevallig een beroep op zou doen. Dit is veel kracht om aan zo'n eenvoudige uitbreiding toe te vertrouwen. En als de extensie ooit wordt gecompromitteerd, krijgt de aanvaller toegang tot alles wat de extensie bezat.
Een extensie met de activeTab
machtiging krijgt daarentegen alleen toegang tot een tabblad als reactie op een expliciet gebruikersgebaar. Als de extensie gecompromitteerd is, moet de aanvaller wachten tot de gebruiker de extensie aanroept voordat hij toegang krijgt. En die toegang duurt slechts totdat er door het tabblad wordt genavigeerd of wordt gesloten.
Wat activeTab toestaat
Terwijl de activeTab
machtiging is ingeschakeld voor een tabblad, kan een extensie:
- Roep
tabs.executeScript
oftabs.insertCSS
aan op dat tabblad. - Haal de URL, titel en favicon voor dat tabblad op via een API die een
tabs.Tab
object retourneert (in wezen verleentactiveTab
detabs
tijdelijk toestemming). - Onderschep netwerkverzoeken op het tabblad naar de hoofdframeoorsprong van het tabblad met behulp van de webRequest API. De extensie krijgt tijdelijk hostrechten voor de oorsprong van het hoofdframe van het tabblad.
ActiveTab aanroepen
De volgende gebruikersgebaren schakelen activeTab
:
- Een browseractie uitvoeren
- Een paginaactie uitvoeren
- Een contextmenu-item uitvoeren
- Een sneltoets uitvoeren vanuit de opdrachten-API
- Een suggestie van de omnibox API accepteren