Descrizione
Utilizza l'API chrome.action
per controllare l'icona dell'estensione nella barra degli strumenti di Google Chrome.
Disponibilità
Manifest
Per utilizzare l'API chrome.action
, specifica un valore "manifest_version"
di 3
e includi la chiave "action"
nel file manifest.
{
"name": "Action Extension",
...
"action": {
"default_icon": { // optional
"16": "images/icon16.png", // optional
"24": "images/icon24.png", // optional
"32": "images/icon32.png" // optional
},
"default_title": "Click Me", // optional, shown in tooltip
"default_popup": "popup.html" // optional
},
...
}
La chiave "action"
(insieme alle relative chiavi secondarie) è facoltativa. Quando non è inclusa, l'estensione viene comunque visualizzata nella barra degli strumenti per darti accesso al menu dell'estensione. Per questo motivo, ti consigliamo di includere sempre almeno le chiavi "action"
e "default_icon"
.
Concetti e utilizzo
Parti dell'interfaccia utente
Icona
L'icona è l'immagine principale nella barra degli strumenti dell'estensione ed è impostata dalla chiave "default_icon"
nella
chiave "action"
del file manifest. Le icone devono avere una larghezza e un'altezza di 16 pixel indipendenti dal dispositivo (DIP).
La chiave "default_icon"
è un dizionario di dimensioni per i percorsi delle immagini. Chrome usa queste icone per
scegliere la scala dell'immagine da usare. Se non viene trovata una corrispondenza esatta, Chrome seleziona la più simile disponibile e la ridimensiona in base all'immagine, il che potrebbe influire sulla qualità dell'immagine.
Poiché i dispositivi con fattori di scala meno comuni, come 1,5x o 1,2x, stanno diventando più comuni, ti invitiamo a fornire più dimensioni per le icone. Inoltre,
previene eventuali modifiche future delle dimensioni di visualizzazione delle icone. Tuttavia, se fornisci un'unica dimensione, la chiave "default_icon"
può anche essere impostata su una stringa con il percorso di una singola icona anziché di un dizionario.
Puoi anche chiamare action.setIcon()
per impostare l'icona dell'estensione in modo programmatico
specificando un percorso immagine diverso o fornendo un'icona generata dinamicamente tramite l'elemento canvas HTML oppure, se l'impostazione è stata impostata da un service worker di estensione, tramite l'API offscreen
canvas.
const canvas = new OffscreenCanvas(16, 16);
const context = canvas.getContext('2d');
context.clearRect(0, 0, 16, 16);
context.fillStyle = '#00FF00'; // Green
context.fillRect(0, 0, 16, 16);
const imageData = context.getImageData(0, 0, 16, 16);
chrome.action.setIcon({imageData: imageData}, () => { /* ... */ });
Per le estensioni pacchettizzate (installate da un file .crx), le immagini possono essere nella maggior parte dei formati visualizzabili dal motore di rendering Blink, inclusi PNG, JPEG, BMP, ICO e altri. Il formato SVG non è supportato. Le estensioni scompattate devono utilizzare immagini PNG.
Descrizione comando (titolo)
La descrizione comando o il titolo viene visualizzata quando l'utente passa il cursore del mouse sopra l'icona dell'estensione nella barra degli strumenti. È inoltre inclusa nel testo accessibile pronunciato dagli screen reader quando il pulsante viene attivato.
La descrizione comando predefinita viene impostata utilizzando il campo "default_title"
della chiave "action"
in manifest.json
.
Puoi anche impostarlo in modo programmatico chiamando action.setTitle()
.
Badge
Se vuoi, le azioni possono mostrare un "badge", ovvero un po' di testo sovrapposto all'icona. In questo modo puoi aggiornare l'azione in modo da visualizzare una piccola quantità di informazioni sullo stato dell'estensione, ad esempio un contatore. Il badge ha una componente di testo e un colore di sfondo. Poiché lo spazio è limitato, consigliamo di utilizzare al massimo quattro caratteri per il testo del badge.
Per creare un badge, impostalo in modo programmatico chiamando action.setBadgeBackgroundColor()
e
action.setBadgeText()
. Nel file manifest non è presente un'impostazione predefinita per il badge. I valori colore del badge possono essere un array di quattro numeri interi compresi tra 0 e 255 che compongono il colore RGBA del badge o una stringa con un valore Colore CSS.
chrome.action.setBadgeBackgroundColor(
{color: [0, 255, 0, 0]}, // Green
() => { /* ... */ },
);
chrome.action.setBadgeBackgroundColor(
{color: '#00FF00'}, // Also green
() => { /* ... */ },
);
chrome.action.setBadgeBackgroundColor(
{color: 'green'}, // Also, also green
() => { /* ... */ },
);
Popup
Il popup di un'azione viene visualizzato quando l'utente fa clic sul pulsante di azione dell'estensione nella barra degli strumenti. Il popup può contenere qualsiasi contenuto HTML e verrà ridimensionato automaticamente in base ai contenuti. Le dimensioni del popup devono essere comprese tra 25 x 25 e 800 x 600 pixel.
Il popup viene impostato inizialmente dalla proprietà "default_popup"
nella chiave "action"
del
manifest.json
file. Se presente, questa proprietà deve puntare a un percorso relativo all'interno della directory delle estensioni. Può anche essere aggiornato dinamicamente in modo da puntare a un percorso relativo diverso utilizzando il
metodo action.setPopup()
.
Casi d'uso
Stato per scheda
Le azioni delle estensioni possono avere stati diversi per ogni scheda. Per impostare un valore per una singola
scheda, utilizza la proprietà tabId
nei metodi di impostazione dell'API action
. Ad esempio, per impostare il testo del badge per una scheda specifica, procedi nel seguente modo:
function getTabId() { /* ... */}
function getTabBadge() { /* ... */}
chrome.action.setBadgeText(
{
text: getTabBadge(tabId),
tabId: getTabId(),
},
() => { ... }
);
Se la proprietà tabId
viene omessa, l'impostazione viene considerata globale. Le impostazioni specifiche della scheda hanno la priorità sulle impostazioni globali.
Stato attivato
Per impostazione predefinita, le azioni della barra degli strumenti sono abilitate (cliccabili) in ogni scheda. Puoi controllare questa impostazione utilizzando i
metodi action.enable()
e action.disable()
. Questo influisce solo sul fatto che l'eventuale popup o
l'evento action.onClicked
venga inviato all'estensione; non influisce sulla presenza dell'azione
nella barra degli strumenti.
Esempi
I seguenti esempi mostrano alcuni modi comuni di utilizzo delle azioni nelle estensioni. Per provare questa API, installa l'esempio dell'API Action dal repository chrome-extension-samples.
Mostrare un popup
È normale che un'estensione mostri un popup quando l'utente fa clic sull'azione dell'estensione. Per implementare questa funzionalità nella tua estensione, dichiara il popup in manifest.json
e specifica i contenuti che Chrome deve mostrare nel popup.
// manifest.json
{
"name": "Action popup demo",
"version": "1.0",
"manifest_version": 3,
"action": {
"default_title": "Click to view a popup",
"default_popup": "popup.html"
}
}
<!-- popup.html -->
<!DOCTYPE html>
<html>
<head>
<style>
html {
min-height: 5em;
min-width: 10em;
background: salmon;
}
</style>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Inserisci uno script di contenuti al clic
Un pattern comune per le estensioni è esporre la funzionalità principale utilizzando l'azione dell'estensione. L'esempio seguente dimostra questo pattern. Quando l'utente fa clic sull'azione, l'estensione inserisci uno script di contenuti nella pagina corrente. Lo script dei contenuti mostra quindi un avviso per verificare che tutto abbia funzionato come previsto.
// manifest.json
{
"name": "Action script injection demo",
"version": "1.0",
"manifest_version": 3,
"action": {
"default_title": "Click to show an alert"
},
"permissions": ["activeTab", "scripting"],
"background": {
"service_worker": "background.js"
}
}
// background.js
chrome.action.onClicked.addListener((tab) => {
chrome.scripting.executeScript({
target: {tabId: tab.id},
files: ['content.js']
});
});
// content.js
alert('Hello, world!');
Emula azioni con contenuti dichiarativi
Questo esempio mostra in che modo la logica in background di un'estensione può (a) disattivare un'azione per impostazione predefinita e (b) utilizzare declarativeContent per attivare l'azione su siti specifici.
// service-worker.js
// Wrap in an onInstalled callback to avoid unnecessary work
// every time the service worker is run
chrome.runtime.onInstalled.addListener(() => {
// Page actions are disabled by default and enabled on select tabs
chrome.action.disable();
// Clear all rules to ensure only our expected rules are set
chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
// Declare a rule to enable the action on example.com pages
let exampleRule = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: {hostSuffix: '.example.com'},
})
],
actions: [new chrome.declarativeContent.ShowAction()],
};
// Finally, apply our new array of rules
let rules = [exampleRule];
chrome.declarativeContent.onPageChanged.addRules(rules);
});
});
Tipi
OpenPopupOptions
Proprietà
-
windowId
number facoltativo
L'ID della finestra in cui aprire il popup di azione. Se non specificato, il valore predefinito è la finestra attualmente attiva.
TabDetails
Proprietà
-
tabId
numero facoltativo
L'ID della scheda per cui eseguire la query sullo stato. Se non viene specificata alcuna tabulazione, viene restituito lo stato non specifico della scheda.
UserSettings
La raccolta di impostazioni specificate dall'utente relativa all'azione di un'estensione.
Proprietà
-
isOnToolbar
booleano
Indica se l'icona di azione dell'estensione è visibile nella barra degli strumenti di primo livello delle finestre del browser (ovvero se l'estensione è stata "bloccata" dall'utente).
UserSettingsChange
Proprietà
-
isOnToolbar
booleano facoltativo
Indica se l'icona di azione dell'estensione è visibile nella barra degli strumenti di primo livello delle finestre del browser (ovvero se l'estensione è stata "bloccata" dall'utente).
Metodi
disable()
chrome.action.disable(
tabId?: number,
callback?: function,
)
Disattiva l'azione per una scheda.
Parametri
-
tabId
numero facoltativo
L'ID della scheda per la quale vuoi modificare l'azione.
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
enable()
chrome.action.enable(
tabId?: number,
callback?: function,
)
Attiva l'azione per una scheda. Per impostazione predefinita, le azioni sono attivate.
Parametri
-
tabId
numero facoltativo
L'ID della scheda per la quale vuoi modificare l'azione.
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
getBadgeBackgroundColor()
chrome.action.getBadgeBackgroundColor(
details: TabDetails,
callback?: function,
)
Restituisce il colore di sfondo dell'azione.
Parametri
-
dettagli
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(result: ColorArray) => void
-
risultato
-
Resi
-
Promise<browserAction.ColorArray>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
getBadgeText()
chrome.action.getBadgeText(
details: TabDetails,
callback?: function,
)
Recupera il testo del badge relativo all'azione. Se non viene specificata alcuna scheda, viene restituito il testo del badge non specifico per la scheda. Se displayActionCountAsBadgeText è attivato, verrà restituito un testo segnaposto, a meno che non sia presente l'autorizzazione declarativeNetRequestFeedback o non sia stato fornito un testo del badge specifico per la scheda.
Parametri
-
dettagli
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(result: string) => void
-
risultato
stringa
-
Resi
-
Promise<string>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
getBadgeTextColor()
chrome.action.getBadgeTextColor(
details: TabDetails,
callback?: function,
)
Restituisce il colore del testo dell'azione.
Parametri
-
dettagli
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(result: ColorArray) => void
-
risultato
-
Resi
-
Promise<browserAction.ColorArray>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
getPopup()
chrome.action.getPopup(
details: TabDetails,
callback?: function,
)
Restituisce il documento HTML impostato come popup per questa azione.
Parametri
-
dettagli
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(result: string) => void
-
risultato
stringa
-
Resi
-
Promise<string>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
getTitle()
chrome.action.getTitle(
details: TabDetails,
callback?: function,
)
Ottiene il titolo dell'azione.
Parametri
-
dettagli
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(result: string) => void
-
risultato
stringa
-
Resi
-
Promise<string>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
getUserSettings()
chrome.action.getUserSettings(
callback?: function,
)
Restituisce le impostazioni specificate dall'utente relative all'azione di un'estensione.
Parametri
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(userSettings: UserSettings) => void
-
userSettings
-
Resi
-
Promise<UserSettings>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
isEnabled()
chrome.action.isEnabled(
tabId?: number,
callback?: function,
)
Indica se l'azione dell'estensione è abilitata per una scheda (o a livello globale se non viene fornito tabId
). Le azioni attivate utilizzando solo declarativeContent
restituiscono sempre false.
Parametri
-
tabId
number facoltativo
L'ID della scheda per la quale vuoi controllare lo stato attivo.
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(isEnabled: boolean) => void
-
isEnabled
booleano
True se l'azione dell'estensione è attiva.
-
Resi
-
Promise<boolean>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
openPopup()
chrome.action.openPopup(
options?: OpenPopupOptions,
callback?: function,
)
Apre il popup dell'estensione. Tra Chrome 118 e Chrome 126, questa opzione è disponibile solo per le estensioni installate in base ai criteri.
Parametri
-
opzioni
OpenPopupOptions facoltativo
Specifica le opzioni per l'apertura del popup.
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
setBadgeBackgroundColor()
chrome.action.setBadgeBackgroundColor(
details: object,
callback?: function,
)
Imposta il colore di sfondo del badge.
Parametri
-
dettagli
oggetto
-
colore
stringa | ColorArray
Un array di quattro numeri interi nell'intervallo [0, 255] che compongono il colore RGBA del badge. Ad esempio, il rosso opaco è
[255, 0, 0, 255]
. Può anche essere una stringa con un valore CSS, con il rosso opaco#FF0000
o#F00
. -
tabId
number facoltativo
Limita la modifica al momento in cui è selezionata una determinata scheda. Viene reimpostato automaticamente quando la scheda viene chiusa.
-
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
setBadgeText()
chrome.action.setBadgeText(
details: object,
callback?: function,
)
Imposta il testo del badge per l'azione. Il badge viene visualizzato sopra l'icona.
Parametri
-
dettagli
oggetto
-
tabId
number facoltativo
Limita la modifica al momento in cui è selezionata una determinata scheda. Viene reimpostata automaticamente quando la scheda viene chiusa.
-
testo
stringa facoltativo
È possibile passare un numero qualsiasi di caratteri, ma solo quattro possono essere inseriti nello spazio. Se viene passata una stringa vuota (
''
), il testo del badge viene cancellato. SetabId
è specificato etext
è null, il testo per la scheda specificata viene cancellato e viene utilizzato per impostazione predefinita il testo del badge globale.
-
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
setBadgeTextColor()
chrome.action.setBadgeTextColor(
details: object,
callback?: function,
)
Imposta il colore del testo per il badge.
Parametri
-
dettagli
oggetto
-
colore
stringa | ColorArray
Un array di quattro numeri interi nell'intervallo [0, 255] che compongono il colore RGBA del badge. Ad esempio, il rosso opaco è
[255, 0, 0, 255]
. Può anche essere una stringa con un valore CSS, dove il rosso opaco è#FF0000
o#F00
. Se non imposti questo valore, verrà scelto automaticamente un colore che contrasti con il colore di sfondo del badge in modo che il testo sia visibile. I colori con valori alfa equivalenti a 0 non verranno impostati e restituiranno un errore. -
tabId
number facoltativo
Limita la modifica al momento in cui è selezionata una determinata scheda. Viene reimpostato automaticamente quando la scheda viene chiusa.
-
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
setIcon()
chrome.action.setIcon(
details: object,
callback?: function,
)
Imposta l'icona per l'azione. L'icona può essere specificata come percorso di un file immagine, come dati dei pixel di un elemento canvas o come dizionario di uno di questi. È necessario specificare la proprietà path o imageData.
Parametri
-
dettagli
oggetto
-
imageData
ImageData | oggetto facoltativo
Un oggetto ImageData o un dizionario {size -> ImageData} che rappresenta l'icona da impostare. Se l'icona viene specificata come dizionario, l'immagine da utilizzare effettiva viene scelta in base alla densità in pixel dello schermo. Se il numero di pixel immagine che rientrano in un'unità di spazio sullo schermo è uguale a
scale
, verrà selezionata l'immagine con dimensioniscale
* n, dove n è la dimensione dell'icona nell'interfaccia utente. È necessario specificare almeno un'immagine. Tieni presente che "details.imageData = foo" è equivalente a "details.imageData = {'16': foo}" -
percorso
stringa | oggetto facoltativo
Un percorso immagine relativo o un dizionario {size -> relativo percorso immagine} che punta all'icona da impostare. Se l'icona viene specificata come dizionario, l'immagine da utilizzare effettiva viene scelta in base alla densità in pixel dello schermo. Se il numero di pixel immagine che rientrano in un'unità di spazio sullo schermo è uguale a
scale
, verrà selezionata l'immagine con dimensioniscale
* n, dove n è la dimensione dell'icona nell'interfaccia utente. È necessario specificare almeno un'immagine. Tieni presente che "details.path = foo" è equivalente a "details.path = {'16': foo}" -
tabId
number facoltativo
Limita la modifica al momento in cui è selezionata una determinata scheda. Viene reimpostato automaticamente quando la scheda viene chiusa.
-
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promise<void>
Chrome 96 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
setPopup()
chrome.action.setPopup(
details: object,
callback?: function,
)
Imposta il documento HTML da aprire come popup quando l'utente fa clic sull'icona dell'azione.
Parametri
-
dettagli
oggetto
-
popup
stringa
Il percorso relativo al file HTML da mostrare in un popup. Se impostato sulla stringa vuota (
''
), non viene visualizzato alcun popup. -
tabId
number facoltativo
Limita la modifica al momento in cui è selezionata una determinata scheda. Viene reimpostato automaticamente quando la scheda viene chiusa.
-
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
setTitle()
chrome.action.setTitle(
details: object,
callback?: function,
)
Imposta il titolo dell'azione. Viene visualizzato nella descrizione comando.
Parametri
-
dettagli
oggetto
-
tabId
number facoltativo
Limita la modifica al momento in cui è selezionata una determinata scheda. Viene reimpostata automaticamente quando la scheda viene chiusa.
-
titolo
stringa
La stringa alla quale deve essere visualizzata l'azione al passaggio del mouse.
-
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promesso<void>
Le promesse sono supportate in Manifest V3 e versioni successive, ma vengono forniti callback per la compatibilità con le versioni precedenti. Non puoi utilizzare entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
Eventi
onClicked
chrome.action.onClicked.addListener(
callback: function,
)
Viene attivato quando viene fatto clic su un'icona di azione. Questo evento non viene attivato se l'azione ha un popup.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(tab: tabs.Tab) => void
-
tab
-
onUserSettingsChanged
chrome.action.onUserSettingsChanged.addListener(
callback: function,
)
Viene attivato quando le impostazioni specificate dall'utente relative all'azione di un'estensione cambiano.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(change: UserSettingsChange) => void
-
modifica
-