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 finché l'utente si trova sulla 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
passa a https://example.com/foo, l'estensione continuerà ad avere accesso alla pagina. Se l'utente
naviga all'indirizzo https://chromium.org, l'accesso viene revocato.
Questa opzione 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 viene concesso a 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';
}
chrome.action.onClicked.addListener((tab) => {
// If the tab URL is not set, it is a restricted page.
if (tab.url) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
Motivazione
Prendi in considerazione un'estensione per il ritaglio web che abbia 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 sua voce di menu contestuale.
Senza "activeTab", questa estensione dovrebbe richiedere l'accesso completo e permanente a ogni sito web,
solo per poter funzionare se l'utente la chiamasse. È un sacco di
potere da affidare a un'estensione così semplice. Se l'estensione viene compromessa, l'autore dell'attacco
ottiene l'accesso a tutti i dati dell'estensione.
Al contrario, un'estensione con l'autorizzazione "activeTab" ottiene l'accesso a una scheda solo in risposta
a un gesto esplicito dell'utente. Se l'estensione viene compromessa, l'utente malintenzionato deve attendere che l'utente richiami l'estensione prima di ottenere l'accesso. e l'accesso dura solo fino a quando non viene
chiusa la scheda o non viene eseguita la navigazione.
Cosa consente "activeTab"
Mentre l'autorizzazione "activeTab" è attiva per una scheda, un'estensione può:
- Chiama
scripting.insertCSS()oscripting.executeScript()in questa scheda se viene dichiarata anche l'autorizzazione"scripting"(come nell'esempio precedente). - Ottieni l'URL, il titolo e la favicona per quella scheda tramite un'API che restituisce un oggetto
tabs.Tab(essenzialmente,"activeTab"concede temporaneamente l'autorizzazione host). - Intercetta 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
I seguenti gesti dell'utente attivano l'autorizzazione "activeTab":
- Esecuzione di un'azione
- Esecuzione di una voce del menu contestuale
- Esecuzione di una scorciatoia da tastiera dall'API Commands
- Accettare un suggerimento dall'API Omnibox