Descrizione
Utilizza l'API chrome.runtime
per recuperare il service worker, restituire i dettagli del manifest e ascoltare e rispondere agli eventi nel ciclo di vita dell'estensione. Puoi anche utilizzare questa API per convertire il percorso relativo degli URL in URL completi.
La maggior parte dei membri di questa API non richiede autorizzazioni. Questa autorizzazione è necessaria per connectNative()
, sendNativeMessage()
e onNativeConnect
.
L'esempio seguente mostra come dichiarare l'autorizzazione "nativeMessaging"
nel file manifest:
manifest.json:
{
"name": "My extension",
...
"permissions": [
"nativeMessaging"
],
...
}
Concetti e utilizzo
L'API Runtime fornisce metodi per supportare una serie di aree che le estensioni possono utilizzare:
- Trasmissione di messaggi
- La tua estensione può comunicare con diversi contesti all'interno dell'estensione e anche con altre estensioni utilizzando questi metodi ed eventi:
connect()
,onConnect
,onConnectExternal
,sendMessage()
,onMessage
eonMessageExternal
. Inoltre, l'estensione può trasmettere messaggi alle applicazioni native sul dispositivo dell'utente utilizzandoconnectNative()
esendNativeMessage()
.
- Accesso ai metadati di estensioni e piattaforme
- Questi metodi ti consentono di recuperare diversi metadati specifici sull'estensione e sulla piattaforma. I metodi in questa categoria includono
getManifest()
egetPlatformInfo()
. - Gestione del ciclo di vita e delle opzioni delle estensioni
- Queste proprietà ti consentono di eseguire alcune meta-operazioni sull'estensione e di visualizzare la pagina delle opzioni.
I metodi e gli eventi in questa categoria includono
onInstalled
,onStartup
,openOptionsPage()
,reload()
,requestUpdateCheck()
esetUninstallURL()
. - Utilità di supporto
- Questi metodi forniscono utilità come la conversione delle rappresentazioni delle risorse interne in formati esterni. I metodi in questa categoria includono
getURL()
. - Utilità per la modalità kiosk
- Questi metodi sono disponibili solo su ChromeOS e sono presenti principalmente per supportare le implementazioni dei kiosk.
I metodi in questa categoria includono
restart()
erestartAfterDelay()
`.
Comportamento delle estensioni non pacchettizzate
Quando un'estensione scompattata viene ricaricata, viene considerata un aggiornamento. Ciò significa che l'evento
chrome.runtime.onInstalled
verrà attivato con il motivo "update"
. Sono inclusi i casi in cui l'estensione viene ricaricata con chrome.runtime.reload()
.
Casi d'uso
Aggiungere un'immagine a una pagina web
Affinché una pagina web possa accedere a una risorsa ospitata su un altro dominio, deve specificare l'URL completo della risorsa (ad es. <img src="https://example.com/logo.png">
). Lo stesso vale per includere un asset di estensione in una pagina web. Le due differenze sono che gli asset dell'estensione devono essere esposti come risorse accessibili via web e che in genere gli script di contenuti sono responsabili dell'inserimento degli asset dell'estensione.
In questo esempio, l'estensione aggiunge logo.png
alla pagina in cui viene iniettato lo script di contenuti utilizzando runtime.getURL()
per creare un URL completamente qualificato. Tuttavia, prima l'asset deve essere dichiarato come risorsa accessibile dal web nel file manifest.
manifest.json:
{
...
"web_accessible_resources": [
{
"resources": [ "logo.png" ],
"matches": [ "https://*/*" ]
}
],
...
}
content.js:
{ // Block used to avoid setting global variables
const img = document.createElement('img');
img.src = chrome.runtime.getURL('logo.png');
document.body.append(img);
}
Inviare dati da uno script di contenuti al service worker
È normale che gli script dei contenuti di un'estensione richiedano dati gestiti da un'altra parte dell'estensione, come il service worker. Come due finestre del browser aperte nella stessa pagina web, questi due contesti non possono accedere direttamente ai valori reciproci. L'estensione può invece utilizzare il passaggio di messaggi per coordinarsi in questi diversi contesti.
In questo esempio, lo script dei contenuti ha bisogno di alcuni dati dal service worker dell'estensione per inizializzare la sua UI. Per ottenere questi dati, passa il messaggio get-user-data
definito dallo sviluppatore al servizio worker e risponde con una copia delle informazioni dell'utente.
content.js:
// 1. Send a message to the service worker requesting the user's data
chrome.runtime.sendMessage('get-user-data', (response) => {
// 3. Got an asynchronous response with the data from the service worker
console.log('received user data', response);
initializeUI(response);
});
service-worker.js:
// Example of a simple user data object
const user = {
username: 'demo-user'
};
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
// 2. A page requested user data, respond with a copy of `user`
if (message === 'get-user-data') {
sendResponse(user);
}
});
Raccogli feedback sulla disinstallazione
Molte estensioni utilizzano sondaggi post-disinstallazione per capire in che modo l'estensione può servire meglio i suoi utenti e migliorare la fidelizzazione. Il seguente esempio mostra come aggiungere questa funzionalità.
background.js:
chrome.runtime.onInstalled.addListener(details => {
if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
chrome.runtime.setUninstallURL('https://example.com/extension-survey');
}
});
Esempi
Per altri esempi di API di runtime, consulta la demo Manifest V3 - Risorse accessibili tramite web.
Tipi
ContextFilter
Un filtro da confrontare con determinati contesti di estensione. I contesti corrispondenti devono corrispondere a tutti i filtri specificati. Qualsiasi filtro non specificato corrisponde a tutti i contesti disponibili. Pertanto, un filtro "{}" corrisponderà a tutti i contesti disponibili.
Proprietà
-
contextIds
stringa[] facoltativo
-
contextTypes
ContextType[] facoltativo
-
documentIds
stringa[] facoltativo
-
documentOrigins
stringa[] facoltativo
-
documentUrls
stringa[] facoltativo
-
frameIds
number[] facoltativo
-
in incognito
booleano facoltativo
-
tabIds
number[] facoltativo
-
windowIds
number[] facoltativo
ContextType
Enum
"TAB"
Specifica il tipo di contesto come scheda
"POPUP"
Specifica il tipo di contesto come finestra popup dell'estensione
"BACKGROUND"
Specifica il tipo di contesto come un worker di servizio.
"OFFSCREEN_DOCUMENT"
Specifica il tipo di contesto come documento offscreen.
"SIDE_PANEL"
Specifica il tipo di contesto come riquadro laterale.
"DEVELOPER_TOOLS"
Specifica il tipo di contesto come strumenti per sviluppatori.
ExtensionContext
Un contesto che ospita i contenuti dell'estensione.
Proprietà
-
contextId
stringa
Un identificatore univoco per questo contesto
-
contextType
Il tipo di contesto a cui corrisponde.
-
documentId
stringa facoltativa
Un UUID per il documento associato a questo contesto o undefined se questo contesto non è ospitato in un documento.
-
documentOrigin
stringa facoltativa
L'origine del documento associato a questo contesto o non definito se il contesto non è ospitato in un documento.
-
documentUrl
stringa facoltativa
L'URL del documento associato a questo contesto o undefined se il contesto non è ospitato in un documento.
-
frameId
numero
L'ID del frame per questo contesto o -1 se questo contesto non è ospitato in un frame.
-
in incognito
booleano
Indica se il contesto è associato a un profilo in incognito.
-
tabId
numero
L'ID della scheda per questo contesto o -1 se questo contesto non è ospitato in una scheda.
-
windowId
numero
L'ID della finestra per questo contesto o -1 se questo contesto non è ospitato in una finestra.
MessageSender
Un oggetto contenente informazioni sul contesto dello script che ha inviato un messaggio o una richiesta.
Proprietà
-
documentId
stringa facoltativa
Chrome 106 e versioni successiveUn UUID del documento che ha aperto la connessione.
-
documentLifecycle
stringa facoltativa
Chrome 106 e versioni successiveIl ciclo di vita del documento che ha aperto la connessione al momento della creazione della porta. Tieni presente che lo stato del ciclo di vita del documento potrebbe essere cambiato dalla creazione della porta.
-
frameId
number facoltativo
Il frame che ha aperto la connessione. 0 per i frame di primo livello, positivo per i frame secondari. Questo valore verrà impostato solo quando è impostato
tab
. -
id
stringa facoltativa
L'ID dell'eventuale estensione che ha aperto la connessione.
-
nativeApplication
stringa facoltativa
Chrome 74 e versioni successiveIl nome dell'eventuale applicazione nativa che ha aperto la connessione.
-
origine
stringa facoltativa
Chrome 80 o versioni successiveL'origine della pagina o del frame che ha aperto la connessione. Può variare dalla proprietà url (ad es. about:blank) o essere opaco (ad es. iframe con sandbox). Questo è utile per identificare se l'origine è attendibile se non possiamo capirlo immediatamente dall'URL.
-
tab
Tab facoltativo
L'eventuale
tabs.Tab
che ha aperto la connessione. Questa proprietà sarà presente solo se la connessione è stata aperta da una scheda (inclusi gli script di contenuti) e solo se il destinatario è un'estensione, non un'app. -
tlsChannelId
stringa facoltativa
L'ID canale TLS della pagina o del frame che ha aperto la connessione, se richiesto dall'estensione e se disponibile.
-
url
stringa facoltativa
L'URL della pagina o del frame che ha aperto la connessione. Se il mittente si trova in un iframe, verrà utilizzato l'URL dell'iframe e non l'URL della pagina che lo ospita.
OnInstalledReason
Il motivo dell'invio di questo evento.
Enum
"install"
Specifica il motivo dell'evento come installazione.
"update"
Specifica il motivo dell'evento come aggiornamento dell'estensione.
"chrome_update"
Specifica il motivo dell'evento come aggiornamento di Chrome.
"shared_module_update"
Specifica il motivo dell'evento come aggiornamento di un modulo condiviso.
OnRestartRequiredReason
Il motivo per cui l'evento viene inviato. "app_update" viene utilizzato quando il riavvio è necessario perché l'applicazione viene aggiornata a una versione più recente. "os_update" viene utilizzato quando il riavvio è necessario perché il browser/sistema operativo è stato aggiornato a una versione più recente. "periodic" viene utilizzato quando il sistema è in esecuzione per più del tempo di attività consentito impostato nel criterio aziendale.
Enum
"app_update"
Specifica il motivo dell'evento come aggiornamento dell'app.
"os_update"
Specifica il motivo dell'evento come aggiornamento del sistema operativo.
"periodic"
Specifica il motivo dell'evento come riavvio periodico dell'app.
PlatformArch
L'architettura del processore della macchina.
Enum
"arm"
Specifica l'architettura del processore come arm.
"arm64"
Specifica l'architettura del processore come arm64.
"x86-32"
Specifica l'architettura del processore come x86-32.
"x86-64"
Specifica l'architettura del processore come x86-64.
"mips"
Specifica l'architettura del processore come mips.
"mips64"
Specifica l'architettura del processore come mips64.
PlatformInfo
Un oggetto contenente informazioni sulla piattaforma corrente.
Proprietà
-
arco
L'architettura del processore della macchina.
-
nacl_arch
L'architettura del client nativo. Potrebbe essere diverso da arch su alcune piattaforme.
-
os
Il sistema operativo su cui è in esecuzione Chrome.
PlatformNaclArch
L'architettura del client nativo. Potrebbe essere diverso da arch su alcune piattaforme.
Enum
"arm"
Specifica l'architettura del client nativo come arm.
"x86-32"
Specifica l'architettura del client nativo come x86-32.
"x86-64"
Specifica l'architettura del client nativo come x86-64.
"mips"
Specifica l'architettura del client nativo come mips.
"mips64"
Specifica l'architettura del client nativo come mips64.
PlatformOs
Il sistema operativo su cui è in esecuzione Chrome.
Enum
"mac"
Specifica il sistema operativo macOS.
"win"
Specifica il sistema operativo Windows.
"android"
Specifica il sistema operativo Android.
"cros"
Specifica il sistema operativo Chrome.
"linux"
Specifica il sistema operativo Linux.
"openbsd"
Specifica il sistema operativo OpenBSD.
"fuchsia"
Specifica il sistema operativo Fuchsia.
Port
Un oggetto che consente la comunicazione bidirezionale con altre pagine. Per saperne di più, consulta la sezione Connessioni di lunga durata.
Proprietà
-
nome
stringa
Il nome della porta, come specificato nella chiamata a
runtime.connect
. -
onDisconnect
Event<functionvoidvoid>
Viene attivato quando la porta è scollegata dalle altre estremità.
runtime.lastError
potrebbe essere impostato se la porta è stata disconnessa a causa di un errore. Se la porta viene chiusa tramite disconnect, questo evento viene attivato solo all'altra estremità. Questo evento viene attivato al massimo una volta (vedi anche Vita della porta).La funzione
onDisconnect.addListener
ha il seguente aspetto:(callback: function) => {...}
-
onMessage
Event<functionvoidvoid>
Questo evento viene attivato quando postMessage viene chiamato dall'altra estremità della porta.
La funzione
onMessage.addListener
ha il seguente aspetto:(callback: function) => {...}
-
mittente
MessageSender facoltativo
Questa proprietà sarà soltanto presente nelle porte passate agli ascoltatori onConnect / onConnectExternal / onConnectNative.
-
disconnetti
nullo
Scollega immediatamente la porta. La chiamata di
disconnect()
su una porta già disconnessa non ha alcun effetto. Quando una porta è disconnessa, non verranno inviati nuovi eventi a questa porta.La funzione
disconnect
ha il seguente aspetto:() => {...}
-
postMessage
nullo
Invia un messaggio all'altra estremità della porta. Se la porta è disconnessa, viene generato un errore.
La funzione
postMessage
ha il seguente aspetto:(message: any) => {...}
-
messaggio
qualsiasi
Chrome 52 e versioni successiveIl messaggio da inviare. Questo oggetto deve essere codificabile in JSON.
-
RequestUpdateCheckStatus
Risultato del controllo dell'aggiornamento.
Enum
"throttled"
Specifica che il controllo dello stato è stato limitato. Ciò può verificarsi dopo controlli ripetuti in un breve periodo di tempo.
"no_update"
Specifica che non sono disponibili aggiornamenti da installare.
"update_available"
Specifica che è disponibile un aggiornamento da installare.
Proprietà
id
L'ID dell'estensione/dell'app.
Tipo
stringa
lastError
Viene compilato con un messaggio di errore se la chiamata a una funzione API non va a buon fine; altrimenti è indefinito. Questo viene definito solo nell'ambito del callback della funzione. Se viene generato un errore, ma non viene eseguito l'accesso a runtime.lastError
all'interno del callback, nella console viene registrato un messaggio che elenca la funzione API che ha generato l'errore. Le funzioni API che restituiscono promesse non impostano questa proprietà.
Tipo
oggetto
Proprietà
-
messaggio
stringa facoltativa
Dettagli sull'errore che si è verificato.
Metodi
connect()
chrome.runtime.connect(
extensionId?: string,
connectInfo?: object,
)
Tenta di connettere gli ascoltatori all'interno di un'estensione (ad esempio la pagina di sfondo) o di altre estensioni/app. Questo è utile per gli script dei contenuti che si connettono ai processi delle estensioni, alla comunicazione tra app/estensioni e alla messaggistica web. Tieni presente che non si connette a nessun ascoltatore in uno script dei contenuti. Le estensioni possono connettersi agli script di contenuti incorporati nelle schede tramite tabs.connect
.
Parametri
-
extensionId
stringa facoltativa
L'ID dell'estensione a cui connettersi. Se omesso, verrà tentato un collegamento con la tua estensione. Obbligatorio se invii messaggi da una pagina web per la messaggistica web.
-
connectInfo
Oggetto facoltativo
-
includeTlsChannelId
booleano facoltativo
Indica se l'ID canale TLS verrà passato a onConnectExternal per i processi in ascolto per l'evento di connessione.
-
nome
stringa facoltativa
Verrà passato a onConnect per le procedure in ascolto per l'evento di connessione.
-
Resi
-
Porta tramite la quale è possibile inviare e ricevere messaggi. L'evento onDisconnect della porta viene attivato se l'estensione non esiste.
connectNative()
chrome.runtime.connectNative(
application: string,
)
Si connette a un'applicazione nativa nella macchina host. Questo metodo richiede l'autorizzazione "nativeMessaging"
. Per ulteriori informazioni, consulta la sezione Messaggistica nativa.
Parametri
-
applicazione
stringa
Il nome dell'applicazione registrata a cui connetterti.
Resi
-
Porta tramite la quale è possibile inviare e ricevere messaggi con l'applicazione
getBackgroundPage()
chrome.runtime.getBackgroundPage(
callback?: function,
)
Recupera l'oggetto "window" di JavaScript per la pagina di sfondo in esecuzione all'interno dell'estensione/dell'app corrente. Se la pagina di sfondo è una pagina di evento, il sistema si assicurerà che venga caricata prima di chiamare il callback. Se non è presente una pagina di sfondo, viene impostato un errore.
Parametri
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(backgroundPage?: Window) => void
-
backgroundPage
Finestra facoltativa
L'oggetto "window" di JavaScript per la pagina in background.
-
Resi
-
Promise<Window | undefined>
Chrome 99 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
getContexts()
chrome.runtime.getContexts(
filter: ContextFilter,
callback?: function,
)
Recupera le informazioni sui contesti attivi associati a questa estensione
Parametri
-
filtro
Un filtro per trovare i contesti corrispondenti. Un contesto corrisponde se corrisponde a tutti i campi specificati nel filtro. Qualsiasi campo non specificato nel filtro corrisponde a tutti i contesti.
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(contexts: ExtensionContext[]) => void
-
contesti
Gli eventuali contesti corrispondenti.
-
Resi
-
Promise<ExtensionContext[]>
Le promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
getManifest()
chrome.runtime.getManifest()
Restituisce i dettagli dell'app o dell'estensione dal file manifest. L'oggetto restituito è una serializzazione del file manifest completo.
Resi
-
oggetto
I dettagli del file manifest.
getPackageDirectoryEntry()
chrome.runtime.getPackageDirectoryEntry(
callback?: function,
)
Restituisce un DirectoryEntry per la directory del pacchetto.
Parametri
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(directoryEntry: DirectoryEntry) => void
-
directoryEntry
DirectoryEntry
-
Resi
-
Promise<DirectoryEntry>
Chrome 122 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
getPlatformInfo()
chrome.runtime.getPlatformInfo(
callback?: function,
)
Restituisce informazioni sulla piattaforma corrente.
Parametri
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(platformInfo: PlatformInfo) => void
-
platformInfo
-
Resi
-
Promise<PlatformInfo>
Chrome 99 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
getURL()
chrome.runtime.getURL(
path: string,
)
Converte un percorso relativo all'interno di una directory di installazione di app/estensioni in un URL completo.
Parametri
-
percorso
stringa
Un percorso a una risorsa all'interno di un'app/estensione espresso in base alla relativa directory di installazione.
Resi
-
stringa
L'URL completo della risorsa.
openOptionsPage()
chrome.runtime.openOptionsPage(
callback?: function,
)
Se possibile, apri la pagina delle opzioni dell'estensione.
Il comportamento preciso può dipendere dalla chiave options_ui
o options_page
del manifest o da ciò che Chrome supporta al momento. Ad esempio, la pagina può essere aperta in una nuova scheda, in chrome://extensions, in un'app o può semplicemente mettere a fuoco una pagina delle opzioni aperta. Non causerà mai il ricaricamento della pagina chiamante.
Se l'estensione non dichiara una pagina delle opzioni o se Chrome non è riuscito a crearne una per qualche altro motivo, il callback imposterà lastError
.
Parametri
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promise<void>
Chrome 99 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
reload()
chrome.runtime.reload()
Ricarica l'app o l'estensione. Questo metodo non è supportato in modalità kiosk. Per la modalità kiosk, utilizza il metodo chrome.runtime.restart().
requestUpdateCheck()
chrome.runtime.requestUpdateCheck(
callback?: function,
)
Richiede un controllo immediato degli aggiornamenti per questa app/estensione.
Importante: la maggior parte delle estensioni/app non deve utilizzare questo metodo, poiché Chrome esegue già controlli automatici ogni poche ore e puoi ascoltare l'evento runtime.onUpdateAvailable
senza dover chiamare requestUpdateCheck.
Questo metodo è appropriato solo per essere chiamato in circostanze molto limitate, ad esempio se la tua estensione comunica con un servizio di backend e il servizio di backend ha stabilito che la versione dell'estensione client è molto obsoleta e vuoi chiedere a un utente di eseguire l'aggiornamento. La maggior parte degli altri utilizzi di requestUpdateCheck, ad esempio la chiamata incondizionata in base a un timer ripetuto, probabilmente serve solo a sprecare risorse del client, della rete e del server.
Nota: se viene chiamata con un callback, anziché restituire un oggetto, questa funzione restituirà le due proprietà come argomenti separati passati al callback.
Parametri
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(result: object) => void
-
risultato
oggetto
Chrome 109 e versioni successiveOggetto RequestUpdateCheckResult che contiene lo stato del controllo dell'aggiornamento e tutti i dettagli del risultato se è disponibile un aggiornamento
-
stato
Risultato del controllo dell'aggiornamento.
-
versione
stringa facoltativa
Se è disponibile un aggiornamento, viene indicata la versione dell'aggiornamento disponibile.
-
-
Resi
-
Promise<object>
Chrome 109 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
restart()
chrome.runtime.restart()
Riavvia il dispositivo ChromeOS quando l'app viene eseguita in modalità kiosk. In caso contrario, non viene eseguita alcuna operazione.
restartAfterDelay()
chrome.runtime.restartAfterDelay(
seconds: number,
callback?: function,
)
Riavvia il dispositivo ChromeOS quando l'app viene eseguita in modalità kiosk dopo il numero di secondi specificato. Se viene chiamata di nuovo prima del termine del tempo, il riavvio verrà ritardato. Se viene chiamato con un valore pari a -1, il riavvio verrà annullato. Non è un'operazione in modalità non kiosk. Può essere chiamato ripetutamente solo dalla prima estensione che invoca questa API.
Parametri
-
secondi
numero
Tempo di attesa in secondi prima del riavvio del dispositivo oppure -1 per annullare un riavvio programmato.
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promise<void>
Chrome 99 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
sendMessage()
chrome.runtime.sendMessage(
extensionId?: string,
message: any,
options?: object,
callback?: function,
)
Invia un singolo messaggio agli ascoltatori di eventi all'interno dell'estensione o di un'altra estensione/app. È simile a runtime.connect
, ma invia un solo messaggio con una risposta facoltativa. Se l'invio avviene alla tua estensione, l'evento runtime.onMessage
verrà attivato in ogni frame dell'estensione (tranne nel frame del mittente) o runtime.onMessageExternal
, se si tratta di un'altra estensione. Tieni presente che le estensioni non possono inviare messaggi agli script di contenuti utilizzando questo metodo. Per inviare messaggi agli script dei contenuti, utilizza tabs.sendMessage
.
Parametri
-
extensionId
stringa facoltativa
L'ID dell'estensione a cui inviare il messaggio. Se omesso, il messaggio verrà inviato alla tua estensione/app. Obbligatorio se invii messaggi da una pagina web per la messaggistica web.
-
messaggio
qualsiasi
Il messaggio da inviare. Questo messaggio deve essere un oggetto codificabile in JSON.
-
opzioni
Oggetto facoltativo
-
includeTlsChannelId
booleano facoltativo
Indica se l'ID canale TLS verrà passato a onMessageExternal per i processi in ascolto per l'evento di connessione.
-
-
callback
function facoltativa
Chrome 99 e versioni successiveIl parametro
callback
ha il seguente aspetto:(response: any) => void
-
risposta
qualsiasi
L'oggetto della risposta JSON inviato dall'handler del messaggio. Se si verifica un errore durante la connessione all'estensione, il callback verrà chiamato senza argomenti e
runtime.lastError
verrà impostato sul messaggio di errore.
-
Resi
-
Promise<any>
Chrome 99 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
sendNativeMessage()
chrome.runtime.sendNativeMessage(
application: string,
message: object,
callback?: function,
)
Inviare un singolo messaggio a un'applicazione nativa. Questo metodo richiede l'autorizzazione "nativeMessaging"
.
Parametri
-
applicazione
stringa
Il nome dell'host di messaggistica nativa.
-
messaggio
oggetto
Il messaggio che verrà passato all'host di messaggistica nativa.
-
callback
function facoltativa
Chrome 99 e versioni successiveIl parametro
callback
ha il seguente aspetto:(response: any) => void
-
risposta
qualsiasi
Il messaggio di risposta inviato dall'host di messaggistica nativa. Se si verifica un errore durante la connessione all'host di messaggistica nativo, il callback verrà chiamato senza argomenti e
runtime.lastError
verrà impostato sul messaggio di errore.
-
Resi
-
Promise<any>
Chrome 99 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
setUninstallURL()
chrome.runtime.setUninstallURL(
url: string,
callback?: function,
)
Imposta l'URL da visitare al termine della disinstallazione. Questa operazione può essere utilizzata per ripulire i dati lato server, eseguire analisi e implementare sondaggi. Massimo 1023 caratteri.
Parametri
-
url
stringa
URL da aprire dopo la disinstallazione dell'estensione. Questo URL deve avere uno schema http: o https:. Imposta una stringa vuota per non aprire una nuova scheda al momento della disinstallazione.
-
callback
function facoltativa
Chrome 45 e versioni successiveIl parametro
callback
ha il seguente aspetto:() => void
Resi
-
Promise<void>
Chrome 99 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti 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.
Eventi
onBrowserUpdateAvailable
chrome.runtime.onBrowserUpdateAvailable.addListener(
callback: function,
)
Utilizza runtime.onRestartRequired
.
Viene attivato quando è disponibile un aggiornamento di Chrome, ma non viene installato immediatamente perché è necessario riavviare il browser.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:() => void
onConnect
chrome.runtime.onConnect.addListener(
callback: function,
)
Viene attivato quando viene stabilita una connessione da un processo di estensione o da uno script di contenuti (da runtime.connect
).
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(port: Port) => void
-
porta
-
onConnectExternal
chrome.runtime.onConnectExternal.addListener(
callback: function,
)
Viene attivato quando viene stabilita una connessione da un'altra estensione (da runtime.connect
) o da un sito web collegabile esternamente.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(port: Port) => void
-
porta
-
onConnectNative
chrome.runtime.onConnectNative.addListener(
callback: function,
)
Viene attivato quando viene stabilita una connessione da un'applicazione nativa. Questo evento richiede l'autorizzazione "nativeMessaging"
. È supportata solo su ChromeOS.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(port: Port) => void
-
porta
-
onInstalled
chrome.runtime.onInstalled.addListener(
callback: function,
)
Viene attivato la prima volta che l'estensione viene installata, quando l'estensione viene aggiornata a una nuova versione e quando Chrome viene aggiornato a una nuova versione.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(details: object) => void
-
dettagli
oggetto
-
id
stringa facoltativa
Indica l'ID dell'estensione del modulo condiviso importato che è stato aggiornato. È presente solo se "reason" è "shared_module_update".
-
previousVersion
stringa facoltativa
Indica la versione precedente dell'estensione, che è appena stata aggiornata. È presente solo se "reason" è "update".
-
motivo
Il motivo dell'invio di questo evento.
-
-
onMessage
chrome.runtime.onMessage.addListener(
callback: function,
)
Viene attivato quando viene inviato un messaggio da un processo di estensione (da runtime.sendMessage
) o da uno script di contenuti (da tabs.sendMessage
).
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(message: any, sender: MessageSender, sendResponse: function) => boolean | undefined
-
messaggio
qualsiasi
-
mittente
-
sendResponse
funzione
Il parametro
sendResponse
ha il seguente aspetto:() => void
-
returns
booleano | non definito
-
onMessageExternal
chrome.runtime.onMessageExternal.addListener(
callback: function,
)
Viene attivato quando un messaggio viene inviato da un'altra estensione (da runtime.sendMessage
). Non può essere utilizzato in uno script di contenuti.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(message: any, sender: MessageSender, sendResponse: function) => boolean | undefined
-
messaggio
qualsiasi
-
mittente
-
sendResponse
funzione
Il parametro
sendResponse
ha il seguente aspetto:() => void
-
returns
booleano | non definito
-
onRestartRequired
chrome.runtime.onRestartRequired.addListener(
callback: function,
)
Viene attivato quando è necessario riavviare un'app o il dispositivo su cui è in esecuzione. L'app deve chiudere tutte le finestre il prima possibile per consentire il riavvio. Se l'app non fa nulla, verrà eseguito un riavvio dopo un periodo di tolleranza di 24 ore. Al momento, questo evento viene attivato solo per le app kiosk di ChromeOS.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(reason: OnRestartRequiredReason) => void
-
motivo
-
onStartup
chrome.runtime.onStartup.addListener(
callback: function,
)
Viene attivato al primo avvio di un profilo in cui è installata questa estensione. Questo evento non viene attivato quando viene avviato un profilo in incognito, anche se questa estensione opera in modalità di navigazione in incognito "split".
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:() => void
onSuspend
chrome.runtime.onSuspend.addListener(
callback: function,
)
Inviato alla pagina dell'evento appena prima che venga scaricata. In questo modo l'estensione ha la possibilità di eseguire alcune operazioni di pulizia. Tieni presente che, poiché la pagina viene scaricata, non è garantito il completamento di eventuali operazioni asincrone avviate durante la gestione di questo evento. Se si verificano altre attività per la pagina dell'evento prima che venga scaricata, verrà inviato l'evento onSuspendCanceled e la pagina non verrà scaricata.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:() => void
onSuspendCanceled
chrome.runtime.onSuspendCanceled.addListener(
callback: function,
)
Inviata dopo onSuspend per indicare che l'app non verrà comunque scaricata.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:() => void
onUpdateAvailable
chrome.runtime.onUpdateAvailable.addListener(
callback: function,
)
Viene attivato quando è disponibile un aggiornamento, ma non viene installato immediatamente perché l'app è in esecuzione. Se non fai nulla, l'aggiornamento verrà installato al successivo scollegamento della pagina di sfondo. Se vuoi che venga installato prima, puoi chiamare esplicitamente chrome.runtime.reload(). Se l'estensione utilizza una pagina di sfondo persistente, questa non viene mai sganciata, quindi, a meno che tu non chiami manualmente chrome.runtime.reload() in risposta a questo evento, l'aggiornamento non verrà installato fino al riavvio successivo di Chrome. Se non sono presenti gestori in ascolto per questo evento e la tua estensione ha una pagina di sfondo persistente, si comporta come se chrome.runtime.reload() venisse chiamato in risposta a questo evento.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(details: object) => void
-
dettagli
oggetto
-
versione
stringa
Il numero di versione dell'aggiornamento disponibile.
-
-
onUserScriptConnect
chrome.runtime.onUserScriptConnect.addListener(
callback: function,
)
Viene attivato quando viene stabilita una connessione da uno script utente di questa estensione.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(port: Port) => void
-
porta
-
onUserScriptMessage
chrome.runtime.onUserScriptMessage.addListener(
callback: function,
)
Viene attivato quando viene inviato un messaggio da uno script utente associato alla stessa estensione.
Parametri
-
callback
funzione
Il parametro
callback
ha il seguente aspetto:(message: any, sender: MessageSender, sendResponse: function) => boolean | undefined
-
messaggio
qualsiasi
-
mittente
-
sendResponse
funzione
Il parametro
sendResponse
ha il seguente aspetto:() => void
-
returns
booleano | non definito
-