2011-04-01 4 views
20

Ho una domanda su come scrivere Google Chrome Extension. Il mio obiettivo ora è quello di rilevare che se è stata creata una scheda o se è stato modificato un URL di una scheda.Come rilevare le schede modificare gli URL o le schede create su Google Chrome Extension?

Praticamente, voglio inserire un dizionario .js da un collegamento online a qualsiasi pagina web su Chrome e lo script verrà eseguito come background.html. Ad esempio, se apri il browser e vai alla tua homepage, eseguirà lo script per inserire dictionary.js in quella pagina. Quando viene creata una nuova scheda o viene aperta una nuova pagina, verrà eseguito anche lo script. E quando le persone cambiano l'URL della scheda, verrà eseguito anche lo script. Come posso rilevare se la scheda cambia in tali situazioni? Ok, ecco il mio ... codice, immagino, per spiegarlo.

chrome.someFunctionThatDetectTheSituationsAbove(function() { 
    insertDictionaryScript();//I'd love to have the script of detection, not the insertDictionaryScript(); 
} 

Apprezzerei per qualsiasi idea. Grazie. : P.

[x]

risposta

6

cosa si sta descrivendo è chiamato uno script contenuti. Non è necessario alcun codice per questo, basta fare una dichiarazione nel file manifest. Ulteriori informazioni sugli script di contenuto here.

+0

Grazie per il tuo commento. Mi hai sbagliato, penso. Perché io uso per il file manifest, ma funziona solo una volta all'avvio dell'estensione. Ok, ad esempio, vorrei 'alert (" HELLO! ");' In background.html. Quindi ogni volta che accendo l'estensione, avvisa "Ciao". Ma quando cambi l'URL della pagina, o apri nuove schede ... non verrà eseguito di nuovo. Quindi, come faccio a rilevare quelle situazioni in cui gli URL delle schede sono cambiati o vengono create nuove schede ... [x] – xx3004

+0

@ xx3004 Non hai bisogno di una pagina di sfondo per questo, basta dichiarare il tuo dictionary.js come script di contenuto nel manifest e verrà automaticamente incluso quando viene creata una nuova scheda, l'URL è cambiato, ecc. – serg

+0

Hai capito, non avrei dovuto metterlo in background.html. Grazie mille! [x] – xx3004

2

È possibile rilevare la creazione di una nuova scheda aggiungendo un ascoltatore all'evento onCreated.

È possibile rilevare la modifica dell'URL della scheda aggiungendo un ascoltatore all'evento onUpdated.

+0

Grazie per il tuo aiuto! Penso che dovrei usare la dichiarazione dello script del contenuto. Ma questo forse è utile per qualche altra cosa: P. Grazie ancora. [x] – xx3004

49

Basta aggiungere questo sui vostri background.js:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    insertDictionaryScript(); 
}); 

chrome.tabs.onCreated.addListener(function(tab) {   
    insertDictionaryScript(); 
}); 
+2

Grazie per il tuo aiuto! Molto chiaramente! Penso di sapere cosa fare ora. [x] – xx3004

+1

L'esecuzione aggiornata su molte volte quando il contenuto del Web viene aggiornato. – vanduc1102

+0

@ vanduc1102: puoi verificare se l'URL è stato modificato, ad es. 'if (changeInfo.url) myFunc();' – thesbros

9

C'è anche onActivated evento:

chrome.tabs.onActivated.addListener(function(tabId, changeInfo, tab) { 
    insertDictionaryScript(); 
}); 
+4

La firma di richiamata 'onActivated' non è corretta: ora richiede un singolo oggetto. Vedi http://developer.chrome.com/extensions/tabs.html#event-onAttivato – vaughan