2013-02-11 1 views
6

Ho un'estensione per Chrome che sto facendo per il mio sito, attualmente ho l'estensione che controlla il database ogni minuto per gli aggiornamenti.Estensione Chrome: hai un'estensione per ascoltare un evento su una pagina?

È possibile che l'estensione ascolti per un evento nella pagina effettiva?

Qualcosa di simile

this.trigger('sendUpdate', data) //this happened on the page 

this.on(sendUpdate, function(){ //this is what the chrome extension listens for 
    //do stuff with data 
}) 

risposta

14

è necessario aggiungere un content_script. content_script hanno pieno accesso al DOM e si può associare a tutti gli eventi a pagina

basta aggiungere questo al file menifest

"content_scripts":[{ 
    "matches":["http://*/*","https://*/*"], 
    "js":"your injected script.js" 
}] 

è possibile ottenere ulteriori informazioni http://developer.chrome.com/extensions/content_scripts.html

anche dalla tua domanda sembra come hai intenzione di lavorare con un evento personalizzato in modo che il js content_scrip sta per essere qualcosa di simile a questo

document.addEventListener('yourEventName', function(e){ 
    //send message to ext 
    var someInformation = {/*your msg here*/} 
    chrome.extension.sendMessage(someInformation, function(response) { 
     //callback 
    }); 
}, false); 

la la pagina di sfondo dovrebbe ascoltare un messaggio.

chrome.extension.onMessage.addListener(function(myMessage, sender, sendResponse){ 
    //do something that only the extension has privileges here 
    return true; 
}); 

allora si può attivare l'evento da tutti gli script nella pagina ...

var evt = document.createEvent('Event'); 
evt.initEvent('yourEventName', true, true); 
var some_element = document; 
some_element.dispatchEvent(evt); 
+0

avete un esempio su come ascoltare per un evento dallo script contenuti –

+0

ho aggiornato la risposta. Spero possa aiutare – Josh