L'autorizzazione "activeTab" concede a un'estensione l'accesso temporaneo alla scheda attualmente attiva quando l'utente richiama l'estensione, ad esempio facendo clic sulla relativa azione. L'accesso alla scheda dura per tutto il tempo in cui l'utente si trova su quella pagina e viene revocato quando l'utente esce dalla pagina o chiude la scheda.
Ad esempio, se l'utente richiama l'estensione su https://example.com e poi
va su https://example.com/foo, l'estensione continuerà ad avere accesso alla pagina. Se l'utente accede a https://chromium.org, l'accesso viene revocato.
Questo funge da alternativa per molti utilizzi di "<all_urls>", ma non mostra alcun messaggio di avviso durante l'installazione:
Senza "activeTab":

Con "activeTab":

L'accesso non è concesso alle pagine con limitazioni, ad esempio le pagine chrome://.
Esempio
Consulta l'estensione di esempio 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
});
}
});
Motivazione
Prendi in considerazione un'estensione di ritaglio web che ha un'azione e una voce di menu contestuale. Questa estensione potrebbe aver bisogno di accedere alle schede solo quando viene fatto clic sulla sua azione o quando viene eseguita la voce del menu contestuale.
Senza "activeTab", questa estensione dovrebbe richiedere l'accesso completo e permanente a ogni sito web,
solo per poter svolgere il suo lavoro se l'utente la richiama. Si tratta di un'autorizzazione molto importante da concedere a un'estensione così semplice. Inoltre, se l'estensione viene compromessa, l'utente malintenzionato ottiene l'accesso a tutto ciò che l'estensione aveva.
Al contrario, un'estensione con l'autorizzazione "activeTab" ottiene l'accesso a una scheda solo in risposta a un'attivazione dall'utente esplicita. Se l'estensione viene compromessa, l'utente malintenzionato deve attendere che l'utente richiami l'estensione prima di ottenere l'accesso. Questo accesso dura solo fino a quando la scheda non viene chiusa o non si esce dalla scheda.
Cosa consente "activeTab"
Se l'autorizzazione "activeTab" è attiva per una scheda, un'estensione può:
- Chiama
scripting.insertCSS()oscripting.executeScript()in quella scheda se è dichiarata anche l'autorizzazione"scripting"(come nell'esempio precedente). - Ottenere l'URL, il titolo e la favicon per quella scheda tramite un'API che restituisce un oggetto
tabs.Tab(essenzialmente,"activeTab"concede temporaneamente l'host permission). - Intercettare le richieste di rete nella scheda all'origine del frame principale della scheda utilizzando l'API webRequest. L'estensione ottiene temporaneamente le autorizzazioni host per l'origine del frame principale della scheda.
Richiamo di activeTab
Le seguenti attivazioni dall'utente abilitano l'autorizzazione "activeTab":
- Esecuzione di un'azione
- Esecuzione di una voce di menu contestuale
- Esecuzione di una scorciatoia da tastiera dall'API commands
- Accettazione di un suggerimento dall'API omnibox