Domande frequenti

Se non trovi una risposta alla tua domanda qui, prova le Domande frequenti sul Chrome Web Store, il tag [google-chrome-extension] su Stack Overflow, il gruppochromium-extensions o la guida dello store.

Generale

Che cosa sono le estensioni di Google Chrome?

Le estensioni di Google Chrome sono applicazioni che vengono eseguite all'interno del browser Chrome e offrono funzionalità aggiuntive, integrazione con siti web o servizi di terze parti ed esperienze di navigazione personalizzate.

Come faccio a configurare Chrome per lo sviluppo delle estensioni?

Se utilizzi una versione di Chrome che supporta le estensioni, hai già tutto il necessario per iniziare a scrivere autonomamente le estensioni. Puoi iniziare attivando la modalità sviluppatore.

Fai clic sull'icona del menu Chrome e seleziona Estensioni dal menu Strumenti. Assicurati che la casella di controllo "Modalità sviluppatore" nell'angolo in alto a destra sia selezionata. Ora puoi ricaricare le estensioni, caricare una directory non pacchettizzata di file come se si trattasse di un'estensione pacchettizzata e altro ancora. Per un tutorial completo, consulta la Guida introduttiva.

Quali tecnologie vengono utilizzate per scrivere estensioni per Chrome?

Le estensioni vengono scritte utilizzando le stesse tecnologie web standard utilizzate dagli sviluppatori per creare siti web. Il linguaggio HTML viene utilizzato come linguaggio di markup dei contenuti, CSS per gli stili e JavaScript per lo script. Poiché Chrome supporta HTML5 e CSS3, gli sviluppatori possono utilizzare nelle loro estensioni le tecnologie open web più recenti, come canvas e animazioni CSS. Le estensioni hanno inoltre accesso a diverse API JavaScript che contribuiscono a eseguire funzioni come la codifica JSON e l'interazione con il browser.

Le estensioni vengono recuperate dal Web ogni volta che viene caricato il browser?

Le estensioni vengono scaricate dal browser Chrome al momento dell'installazione e successivamente eseguite sul disco locale per velocizzare le prestazioni. Tuttavia, se una nuova versione dell'estensione viene pubblicata online, questa verrà scaricata automaticamente in background per tutti gli utenti che l'hanno installata. Le estensioni possono anche effettuare in qualsiasi momento richieste di contenuti remoti per interagire con un servizio web o recuperare nuovi contenuti dal web.

Come faccio a stabilire quale versione di Chrome è stata implementata su quale canale?

Per determinare quale versione di Chrome è attualmente disponibile su ciascuna delle diverse piattaforme, visita il sito omahaproxy.appspot.com. Sul sito visualizzerai i dati in un formato simile al seguente:

cf,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,canary,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####

Ogni riga rappresenta le informazioni relative a una diversa combinazione di piattaforma e canale. Le piattaforme elencate sono cf (Google Chrome Frame), linux, mac, win e cros (Google ChromeOS). I canali elencati sono canary, dev, beta e stable. I due numeri in quattro parti dopo il canale rappresentano la versione attuale e quella precedente di Chrome di cui è stato eseguito il deployment nella combinazione piattaforma-canale. Le altre informazioni sono metadati relativi alla data di invio iniziale delle release, nonché ai numeri di revisione associati a ogni build.

Funzionalità

Le estensioni possono effettuare richieste Ajax interdominio?

Sì. Le estensioni possono effettuare richieste interdominio. Consulta questa pagina per ulteriori informazioni.

Le estensioni possono utilizzare servizi web di terze parti?

Sì. Le estensioni sono in grado di effettuare richieste Ajax interdominio, in modo da poter chiamare direttamente le API remote. Le API che forniscono dati in formato JSON sono particolarmente facili da usare.

Le estensioni possono codificare/decodificare dati JSON?

Sì, poiché V8 (il motore JavaScript di Chrome) supporta JSON.stringify e JSON.parse in modo nativo, puoi utilizzare queste funzioni nelle tue estensioni come descritto qui senza includere ulteriori librerie JSON nel codice.

Le estensioni possono archiviare i dati localmente?

Sì, le estensioni possono utilizzare localStorage per archiviare i dati della stringa in modo permanente. Grazie alle funzioni JSON integrate in Chrome, puoi archiviare strutture di dati complesse in localStorage. Per le estensioni che devono eseguire query SQL sui dati archiviati, Chrome implementa i database SQL lato client, che possono essere utilizzati anche.

Le estensioni possono utilizzare OAuth?

Sì, esistono estensioni che utilizzano OAuth per accedere alle API di dati remote. La maggior parte degli sviluppatori trova comodo l'utilizzo di una libreria OAuth di JavaScript per semplificare il processo di firma delle richieste OAuth.

Le estensioni possono creare un'interfaccia utente al di fuori della pagina web sottoposta a rendering?

Sì, la tua estensione potrebbe aggiungere pulsanti all'interfaccia utente del browser Chrome. Per ulteriori informazioni, leggi la sezione Azioni del browser e Azioni sulle pagine.

Un'estensione può anche creare notifiche popup che esistono al di fuori della finestra del browser. Per ulteriori dettagli, consulta la documentazione relativa alle notifiche desktop.

Le estensioni possono ascoltare i clic sulle schede e sui pulsanti di navigazione di Chrome?

No. Le estensioni si limitano all'ascolto degli eventi descritti nella documentazione dell'API.

Due estensioni possono comunicare tra loro?

Sì, le estensioni possono passare messaggi ad altre estensioni. Per ulteriori informazioni, consulta la documentazione sulla trasmissione di messaggi.

Le estensioni possono utilizzare Google Analytics?

Sì. Poiché le estensioni sono create proprio come i siti web, possono utilizzare Google Analytics per monitorare l'utilizzo. Tuttavia, è necessario modificare il codice di monitoraggio per estrarre una versione HTTPS della libreria di Google Analytics. Per ulteriori informazioni, consulta questo tutorial.

Le estensioni possono modificare gli URL chrome://?

No. Le API delle estensioni sono state progettate per ridurre al minimo i problemi di compatibilità con le versioni precedenti che possono insorgere con il push di nuove versioni del browser. Se consenti gli script di contenuti negli URL chrome://, gli sviluppatori inizieranno a fare affidamento su DOM, CSS e JavaScript di queste pagine per restare invariati. Nel migliore dei casi, queste pagine non possono essere aggiornate con la stessa rapidità con cui vengono aggiornate al momento. Nel peggiore dei casi, potrebbe significare che un aggiornamento di una di queste pagine potrebbe causare l'interruzione di un'estensione, causando l'interruzione del funzionamento di parti chiave del browser per gli utenti di quell'estensione.

Il motivo per cui è consentita la sostituzione completa dei contenuti ospitati in questi URL è che obbliga gli sviluppatori di estensioni a implementare tutte le funzionalità che vogliono senza dipendere dall'implementazione interna del browser.

Le estensioni possono aprire popup di azioni nel browser/nella pagina senza l'interazione dell'utente?

No, i popup possono essere aperti solo se l'utente fa clic sulla pagina corrispondente o sull'azione nel browser. Un'estensione non può aprire il popup in modo programmatico.

Le estensioni possono tenere aperti i popup dopo che l'utente fa clic per uscire?

No, i popup si chiudono automaticamente quando l'utente si concentra su una parte del browser esterna al popup. Non c'è modo di tenere il popup aperto dopo che l'utente ha fatto clic per uscire.

Le estensioni possono ricevere una notifica quando vengono installate/disinstallate?

Puoi ascoltare l'evento runtime.onInstalled per ricevere una notifica quando l'estensione viene installata o aggiornata oppure quando Chrome stesso viene aggiornato. Non è presente alcun evento corrispondente al momento della disinstallazione dell'estensione.

Sviluppo

Come posso creare un'interfaccia utente per la mia estensione?

Le estensioni utilizzano HTML e CSS per definire le interfacce utente, in modo che tu possa utilizzare controlli dei moduli standard per creare l'interfaccia utente o definire l'interfaccia con CSS, come faresti con una pagina web. Inoltre, le estensioni possono aggiungere alcuni elementi UI limitati a Chrome.

Quanti dati posso archiviare in localStorage?

Le estensioni possono archiviare fino a 5 MB di dati in localStorage.

Come posso creare un menu di opzioni per la mia applicazione?

Puoi consentire agli utenti di impostare le opzioni per la tua estensione creando una pagina Opzioni, ovvero una semplice pagina HTML che verrà caricata quando l'utente fa clic sul pulsante "Opzioni" per l'estensione. Questa pagina può leggere e scrivere impostazioni in localStorage o persino inviare opzioni a un server web in modo che possano essere rese persistenti in tutti i browser.

Quali strumenti di debug sono disponibili per gli sviluppatori delle estensioni?

Gli strumenti per sviluppatori incorporati di Chrome possono essere utilizzati per eseguire il debug di estensioni e pagine web. Per ulteriori informazioni, consulta questo tutorial sul debug delle estensioni.

Perché le corrispondenze con caratteri jolly non funzionano per i domini di primo livello (TLD)?

Non puoi utilizzare pattern di corrispondenza con caratteri jolly come http://google.*/* per trovare corrispondenze con i domini di primo livello (come http://google.es e http://google.fr) a causa della complessità di limitare effettivamente tale corrispondenza solo ai domini desiderati.

Nell'esempio di http://google.*/*, i domini Google verrebbero abbinati, ma lo stesso vale per http://google.someotherdomain.com. Inoltre, molti siti non possiedono tutti i domini di primo livello del proprio dominio. Ad esempio, supponi di voler utilizzare http://example.*/* per trovare corrispondenze di http://example.com e http://example.es, ma http://example.net è un sito ostile. Se l'estensione presenta un bug, il sito ostile potrebbe attaccare l'estensione per ottenere l'accesso ai maggiori privilegi dell'estensione.

Dovresti enumerare esplicitamente i domini di primo livello su cui vuoi eseguire la tua estensione.

Perché l'API di gestione non attiva gli eventi quando la mia estensione viene installata/disinstallata?

L'API di gestione era destinata a contribuire alla creazione di nuove estensioni sostitutive della pagina della scheda. Non era previsto attivare eventi di installazione/disinstallazione per l'estensione corrente.

Come fa un'estensione a determinare se è attiva per la prima volta?

Puoi rimanere in ascolto dell'evento runtime.onInstalled. Leggi questa sezione delle Domande frequenti.

Funzionalità e bug

Penso di aver trovato un bug. Come posso assicurarmi che venga risolto?

Durante lo sviluppo di un'estensione, potresti notare un comportamento che non corrisponde alla documentazione delle estensioni e potrebbe essere il risultato di un bug in Chrome. La cosa migliore da fare è assicurarsi che venga presentata una segnalazione del problema appropriata e che il team di Chromium abbia informazioni sufficienti per riprodurre il comportamento.

Per assicurarti che ciò avvenga:

  1. Sviluppa una minima estensione di prova per dimostrare il problema che vuoi segnalare. Questa estensione dovrebbe includere la minor quantità di codice possibile per dimostrare il bug, in genere non dovrebbe superare le 100 righe di codice. Molte volte, gli sviluppatori si accorgono di non riuscire a riprodurre i problemi in questo modo, il che è un buon indicatore del fatto che il bug è presente nel loro codice.
  2. Esegui una ricerca nel tracker dei problemi all'indirizzo http://crbug.com per vedere se qualcuno ha segnalato un problema simile. La maggior parte dei problemi relativi alle estensioni viene indicata in component=Platform>Estensioni, pertanto, per cercare un bug dell'estensione relativo alla funzione chrome.tabs.executeScript, ad esempio, cerca "component=Platform>Extensions Type=Bug chrome.tabs.executeScript", che ti fornirà questo elenco di risultati.
  3. Se trovi un bug che descrive il tuo problema, fai clic sull'icona a forma di stella per ricevere una notifica quando il bug riceve un aggiornamento. Non rispondere al bug dicendo "Anch'io" o chiedendo "quando verrà risolto il problema?". Questi aggiornamenti possono causare l'invio di centinaia di email. Aggiungi un commento solo se disponi di informazioni (ad esempio uno scenario di test migliore o una correzione suggerita) che potrebbero essere utili.
  4. Se non hai trovato alcun bug appropriato da contrassegnare, invia una nuova segnalazione del problema all'indirizzo http://crbug.com/new. Compila questo modulo nel modo più esplicito possibile: scegli un titolo descrittivo, spiega i passaggi per riprodurre il bug e descrivi il comportamento previsto e effettivo. Allega al report l'esempio di test e, se opportuno, aggiungi degli screenshot. Più facile è per gli altri utenti riprodurre il problema con la segnalazione, maggiori sono le probabilità che il bug venga risolto tempestivamente.
  5. Attendi che il bug venga aggiornato. La maggior parte dei nuovi bug viene valutata entro una settimana, anche se a volte un aggiornamento può richiedere più tempo. Non rispondere al bug per chiedere quando il problema verrà risolto. Se dopo due settimane il tuo bug non è stato modificato, pubblica un messaggio nel gruppo di discussione con un link che rimanda al tuo bug.
  6. Se inizialmente hai segnalato il bug nel gruppo di discussione e sei stato indirizzato a questa domanda frequente, rispondi al tuo thread originale con un link al bug che hai contrassegnato come speciale o segnalato. In questo modo sarà più semplice per gli altri che riscontrano lo stesso problema trovare il bug corretto.

Ho una richiesta di funzionalità. Come faccio a segnalarlo?

Se identifichi una funzionalità (soprattutto se è correlata a un'API sperimentale) che potrebbe essere aggiunta per migliorare l'esperienza di sviluppo delle estensioni, assicurati che sia presentata una richiesta appropriata nel tracker dei problemi.

Per assicurarti che ciò avvenga:

  1. Esegui una ricerca nel tracker dei problemi all'indirizzo http://crbug.com per vedere se qualcuno ha richiesto una funzionalità simile. La maggior parte delle richieste relative alle estensioni è archiviata in component=Platform>Estensioni, quindi per cercare una richiesta di funzionalità di estensione correlata alle scorciatoie da tastiera (ad esempio), cerca "component=Platform>Extensions Type=Feature shortcuts", che ti fornirà questo elenco di risultati.
  2. Se trovi un ticket che corrisponde alla tua richiesta, fai clic sull'icona a forma di stella per ricevere una notifica quando il bug riceve un aggiornamento. Non rispondere al bug per dire "Anch'io" o per chiedere "Quando verrà implementato?". Questi aggiornamenti possono causare l'invio di centinaia di email.
  3. Se non hai trovato un ticket appropriato da aggiungere a Speciali, invia una nuova richiesta all'indirizzo http://crbug.com/new. Fornisci il maggior numero possibile di dettagli durante la compilazione di questo modulo: scegli un titolo descrittivo e spiega esattamente quale funzionalità vorresti e come intendi utilizzarla.
  4. Attendi che il ticket venga aggiornato. La maggior parte delle nuove richieste viene valutata entro una settimana, anche se a volte un aggiornamento può richiedere più tempo. Non rispondere al ticket per chiedere quando la funzionalità verrà aggiunta. Se il ticket non è stato modificato dopo due settimane, pubblica un messaggio nel gruppo di discussione con un link per tornare alla tua richiesta.
  5. Se inizialmente hai segnalato la tua richiesta nel gruppo di discussione e sei stato indirizzato a questa voce di Domande frequenti, rispondi al thread originale con un link al ticket che hai aggiunto a Speciali o aperto. In questo modo, gli altri utenti con la stessa richiesta troveranno più facilmente il biglietto corretto.