2013-02-11 3 views
6

Ich habe eine Chrome-Erweiterung, die ich für meine Website mache, momentan habe ich die Erweiterung, die jede Minute die Datenbank auf Updates prüft.Chrome-Erweiterung: Eine Erweiterung auf ein Ereignis auf einer Seite warten lassen?

Ist es möglich, dass die Nebenstelle auf der aktuellen Seite nach einem Ereignis sucht?

So etwas wie dieses

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 
}) 

Antwort

14

benötigen Sie einen content_script hinzuzufügen. content_script hat vollen Zugriff auf das DOM und Sie können

gerade diese auf Seite zu allen Veranstaltungen binden fügt die menifest Datei

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

Sie weitere Informationen erhalten können http://developer.chrome.com/extensions/content_scripts.html

aus Ihrer Frage auch es aussieht wie gehen Sie mit einem benutzerdefinierten Ereignis arbeiten werden, damit Ihre content_scrip js etwas ähnlich wie diese

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

sein wird der Hintergrundseite sollte auf eine Nachricht warten.

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

dann können Sie das Ereignis aus allen Skripts auf der Seite auslösen ...

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

haben Sie ein Beispiel dafür, wie für ein Ereignis aus der Content-Skript –

+0

ich die Antwort aktualisiert hört. Ich hoffe, das hilft – Josh

Verwandte Themen