Domande frequenti

Se non trovi una risposta alla tua domanda qui, consulta le domande frequenti sul Chrome Web Store, il tag [google-chrome-extension] su Stack Overflow, nel gruppo Chromium-extensions o nel guida del negozio.

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 che forniscono funzionalità, integrazione con siti web o servizi di terze parti e navigazione personalizzata ed esperienze variegate.

Come faccio a configurare Chrome per lo sviluppo di estensioni?

Se utilizzi una versione di Chrome che supporta le estensioni, hai già tutto devi iniziare a scrivere autonomamente un'estensione. Puoi iniziare attivando la modalità sviluppatore.

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

Quali tecnologie vengono utilizzate per scrivere estensioni per Chrome?

Le estensioni sono scritte utilizzando le stesse tecnologie web standard che gli sviluppatori usano per creare siti web. HTML viene utilizzato come linguaggio di markup dei contenuti, CSS per lo stile e JavaScript per l'esecuzione dello scripting. Poiché Chrome supporta HTML5 e CSS3, gli sviluppatori possono utilizzare la versione come canvas e animazioni CSS nelle estensioni. Le estensioni hanno inoltre accesso diverse API JavaScript che aiutano 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 vengono successivamente eseguite dal disco locale per velocizzare le prestazioni. Tuttavia, se viene inviata una nuova versione dell'estensione online, verrà scaricata automaticamente in background per tutti gli utenti che dispongono dell'estensione installato. Le estensioni possono inoltre effettuare richieste di contenuti remoti in qualsiasi momento, al fine di interagire con un servizio web o estrarre nuovi contenuti dal web.

Come faccio a stabilire quale versione di Chrome viene distribuita in quale canale?

Per determinare quale versione di Chrome è attualmente disponibile su ciascuna delle diverse piattaforme, visita omahaproxy.appspot.com. Su quel sito vedrai i dati in un formato simile a:

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 informazioni su una diversa combinazione di piattaforma e canale. L'elenco sono cf (Google Chrome Frame), linux, mac, win e cros (Google ChromeOS). La canali elencati sono canary, dev, beta e stable. I due numeri di quattro parti dopo il rappresentano le versioni attuali e precedenti di Chrome di cui è stato eseguito il deployment su quel canale della piattaforma combinazione. Il resto delle informazioni sono i metadati relativi alla data di inizio del push delle release, nonché i numeri di revisione associati a ogni build.

Funzionalità

Le estensioni possono effettuare richieste Ajax tra domini?

Sì. Le estensioni possono effettuare richieste interdominio. Per ulteriori informazioni, visita questa pagina.

Le estensioni possono utilizzare servizi web di terze parti?

Sì. Le estensioni sono in grado di effettuare richieste Ajax tra domini, quindi possono chiamare API remote strato Add. Le API che forniscono dati in formato JSON sono particolarmente facili da usare.

Le estensioni possono codificare/decodificare i dati JSON?

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

Le estensioni possono archiviare i dati localmente?

Sì, le estensioni possono utilizzare localStorage per archiviare i dati di stringa in modo permanente. Le funzionalità integrate di Chrome con le funzioni JSON, puoi archiviare strutture di dati complesse in localStorage. Per le estensioni che devono eseguire query SQL sui dati memorizzati, Chrome implementa i database SQL lato client, possono essere utilizzati.

Le estensioni possono utilizzare OAuth?

Sì, esistono estensioni che utilizzano OAuth per accedere ad API di dati remoti. La maggior parte degli sviluppatori lo trova utilizzare una libreria OAuth JavaScript per semplificare la procedura di firma di OAuth. richieste.

Le estensioni possono creare un'interfaccia utente al di fuori della pagina web visualizzata?

Sì, la tua estensione potrebbe aggiungere pulsanti all'interfaccia utente del browser Chrome. Vai al browser azioni e azioni sulla pagina per ulteriori informazioni.

Un'estensione può anche creare notifiche popup al di fuori della finestra del browser. Consulta le documentazione relativa alle notifiche desktop per ulteriori dettagli.

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 trasmettere messaggi ad altre estensioni. Consulta la documentazione relativa alla trasmissione dei messaggi per ulteriori informazioni.

Le estensioni possono utilizzare Google Analytics?

Sì, poiché le estensioni sono create proprio come i siti web, possono utilizzare Google Analytics per monitorare all'utilizzo delle risorse. Tuttavia, per estrarre una versione HTTPS di Google Analytics, devi modificare il codice di monitoraggio. libreria. Per ulteriori informazioni in merito, 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 quando viene eseguito il push di nuove versioni del browser. Se consenti gli script di contenuti su chrome:// URL, gli sviluppatori inizierebbero a fare affidamento su DOM, CSS e JavaScript di queste pagine per rimanere invariati. Nella migliore delle ipotesi, queste pagine non possono essere aggiornate con la stessa rapidità con cui vengono aggiornate in questo momento. Nel peggiore dei casi, potrebbe significare che un aggiornamento di una di queste pagine potrebbe causare il caricamento di un'estensione che interrompe il funzionamento delle parti principali del browser per gli utenti dell'estensione.

Il motivo per cui è consentita la sostituzione dei contenuti ospitati in questi URL è perché obbliga lo sviluppatore di un'estensione a implementare tutte le funzionalità di cui desidera senza dipendere l'implementazione interna del browser rimanga invariata.

Le estensioni possono aprire i popup di azione del browser o della pagina senza interazione dell'utente?

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

Le estensioni possono mantenere i popup aperti dopo che l'utente fa clic all'esterno dell'area?

No, i popup si chiudono automaticamente quando l'utente si concentra su una parte del browser al di fuori di nella finestra popup. Non è possibile tenere il popup aperto dopo che l'utente ha abbandonato il sito.

Le estensioni possono ricevere notifiche quando vengono installate/disinstallate?

Puoi ascoltare l'evento runtime.onInstalled per ricevere una notifica quando l'estensione viene installati o aggiornati oppure quando Chrome viene aggiornato. Non esiste nessun evento corrispondente per quando l'estensione viene disinstallata.

Sviluppo

Come faccio a creare una UI per la mia estensione?

Le estensioni utilizzano HTML e CSS per definire le interfacce utente, in modo da poter utilizzare i controlli modulo standard per creare la tua UI o definire lo stile dell'interfaccia con CSS, come faresti per una pagina web. Inoltre, le estensioni può aggiungere alcuni elementi UI limitati in Chrome.

Quanti dati posso archiviare in localStorage?

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

Come faccio a creare un menu opzioni per la mia applicazione?

Puoi consentire agli utenti di impostare le opzioni per la tua estensione creando una pagina opzioni, una pagina HTML semplice che verrà caricata quando un utente fa clic sulle "opzioni" relativo all'estensione. Questa pagina può leggere e scrivere le impostazioni su localStorage o anche inviare opzioni a un server web, e possono essere resi persistenti nei vari browser.

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

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

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 di domini di primo livello (come http://google.es e http://google.fr) a causa della complessità dell'effettiva limitazione di un solo ai domini desiderati.

Nell'esempio di http://google.*/*, verrebbero corrispondenti i domini Google, ma lo stesso succederebbe http://google.someotherdomain.com. Inoltre, molti siti non possiedono tutti i domini di primo livello per il proprio dominio. Ad esempio, supponiamo di voler usare http://example.*/* per trovare una corrispondenza con http://example.com e http://example.es, ma http://example.net è un sito ostile. Se l'estensione presenta un bug, il sito ostile potrebbe potenzialmente attaccare la tua estensione per avere accesso ai relativi maggiori privilegi.

Devi enumerare esplicitamente i domini di primo livello sui quali desideri eseguire l'estensione.

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

L'API di gestione era pensata per aiutare a creare estensioni di sostituzione della pagina delle nuove schede. Non era allo scopo di attivare eventi di installazione/disinstallazione per l'estensione attuale.

In che modo un'estensione può determinare se è in esecuzione per la prima volta?

Puoi ascoltare l'evento runtime.onInstalled. Consulta questa sezione delle domande frequenti.

Funzionalità e bug

Penso di aver trovato un insetto! Come faccio ad assicurarmi che il problema venga risolto?

Durante lo sviluppo di un'estensione, potresti rilevare comportamenti che non corrispondono alle estensioni documentazione e potrebbe essere il risultato di un bug di Chrome. La cosa migliore da fare è assicurarsi venga inviata la segnalazione di problema appropriata e il team di Chromium dispone di informazioni sufficienti per riprodurre comportamento degli utenti.

Ecco i passaggi da seguire per assicurarti che siano:

  1. Sviluppa una minima estensione di prova che dimostri il problema che vuoi segnalare. Questo deve avere la minor quantità di codice possibile per dimostrare il bug (generalmente dovrebbe essere Massimo 100 righe di codice. Spesso gli sviluppatori non riescono a riprodurre i loro problemi in questo modo, il che è un buon indicatore del fatto che il bug si trova nel loro codice.
  2. Esegui una ricerca in Issue Tracker all'indirizzo http://crbug.com per vedere se qualcuno ha segnalato un problema simile problema. La maggior parte dei problemi relativi alle estensioni si trova in component=Platform>Extensions, pertanto per cercare un bug dell'estensione relativo alla funzione chrome.tabs.executeScript (ad esempio), cerca "component=Platform>Extensions Type=Bug chrome.tabs.executeScript", ottenendo 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 riceve un aggiornamento. Non rispondere al bug dicendo "Anch'io" oppure chiedi "Quando sarà risolto?"; Questi aggiornamenti possono causare l'invio di centinaia di email. Aggiungi un commento solo se hai informazioni (ad esempio uno scenario di test migliore o una correzione suggerita) che potrebbero essere utili.
  4. Se non hai trovato un bug appropriato da aggiungere a Speciali, invia una nuova segnalazione di problema all'indirizzo http://crbug.com/new. Cerca di compilare questo modulo nel modo più esplicito possibile: scegli un titolo descrittivo, spiega il passaggi per riprodurre il bug e descrivere il comportamento previsto ed effettivo. Allega il test esempio al report e, se opportuno, aggiungi degli screenshot. Più facile sarà per il report altre persone a riprodurre il tuo problema, maggiori sono le possibilità che il bug venga risolto rapidamente.
  5. Attendi che il bug venga aggiornato. La maggior parte dei nuovi bug viene valutata entro una settimana, anche se a volte può essere necessario più tempo. Non rispondere al bug per chiedere quando si verificherà il problema corretti. 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 sezione delle domande frequenti, rispondere al thread originale con un link al bug che hai aggiunto a Speciali o segnalato. In questo modo per altri utenti che riscontrano lo stesso problema è più facile 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 migliorare l'esperienza di sviluppo delle estensioni, assicurarsi che nel problema sia stata presentata una richiesta adeguata tracker.

Ecco i passaggi da seguire per assicurarti che siano:

  1. Esegui una ricerca in Issue Tracker all'indirizzo http://crbug.com per vedere se qualcuno ha richiesto una una caratteristica simile. La maggior parte delle richieste relative alle estensioni rientra nella categoria component=Platform>Extensions, quindi per cercare una richiesta di funzionalità di estensione relativa a le scorciatoie da tastiera (ad esempio), cerca "component=Platform>Extensions Type=Feature shortcuts", che ti fornirà questo elenco di di ricerca.
  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 dicendo "Anch'io" oppure chiedi "Quando sarà implemented?"; 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. Essere il più dettagliato possibile quando compili questo modulo: scegli un titolo descrittivo e esattamente quale funzionalità vorresti e come pensi di utilizzarla.
  4. Attendi che il ticket venga aggiornato. La maggior parte delle nuove richieste viene valutata entro una settimana, anche se può a volte può essere necessario più tempo. Non rispondere al ticket per chiedere quando verrà attivata la funzionalità aggiunto. Se il ticket non è stato modificato dopo due settimane, pubblica un messaggio nella gruppo di discussione con un link che rimanda alla tua richiesta.
  5. Se inizialmente hai segnalato la tua richiesta nel gruppo di discussione e sei stato indirizzato a queste domande frequenti , rispondi al thread originale con un link al ticket che hai aggiunto a Speciali o aperto. In questo modo consentire agli altri utenti che hanno effettuato la stessa richiesta di trovare il ticket corretto.