2011-01-05 5 views
1

Ich habe gelesen, wie man ein Handle auf DOM-Elemente erhalten. Dies war ein sehr hilfreicher Link: http://forums.mozillazine.org/viewtopic.php?f=27&t=1521545NPAPI - Verwenden Sie JavaScript-Objekte/Funktionen aus dem Plugin

Meine Frage ist jetzt, kann ich ein Handle auf einem Javascript var/Objekt, das ich erstellt habe, oder beliebige Funktionen?

Auf Seite zu laden, ich habe ein Skript, so etwas wie diese Ausführung ...

var controller = new Controller() 

oder

function callme(param1, param2) { ... } 

jetzt aus meinem Plugin, möchte ich in der Lage sein, Methoden aufrufen aus mein Controller-Objekt. ODER, führe diesen Funktionsaufruf aus. Ist das möglich und wie würde ich das machen?

Danke,

Chris

Antwort

7

Von Ihrem Link, den Sie wissen, wie die NPObject für die DOM-Fenster zu erhalten; Von dort müssen Sie nur wissen, dass alle globalen Javascript-Variablen tatsächlich Eigenschaften des Fensters sind.

var controller = new Controller(); 

Wenn Sie dies im globalen Bereich gemacht haben, dann window.controller ist Ihre Variable, so brauchen Sie nur zu tun:

/* Get window object */ 
NPObject* window = NULL; 
NPN_GetValue(aInstance, NPNVWindowNPObject, &window); 

/* Get document object */ 
NPVariant controllerVar; 
NPIdentifier id = NPN_GetStringIdentifier("controller"); 
NPN_GetProperty(aInstance, window, id, &controllerVar); 
NPObject* document = NPVARIANT_TO_OBJECT(controllerVar); 

Sie können dann Zugriff auf die Eigenschaften auf Ihrem Controller Objekt oder Methoden aufrufen Beachten Sie, dass, wenn der Controller eine Funktion wäre, Sie ihn mit NPN_InvokeDefault aufrufen könnten.

BTW, FireBreath automatisiert die meisten davon.

+0

Großartig, vielen Dank. Ich habe deinen Blog und dein 3-teiliges Plugin-Tutorial gelesen, aber es scheint, dass mir mein Mangel an DOM/JavaScript-Know-how im Wege steht. Ich habe versucht, das oben genannte war wahr, und verwendet Chroms JavaScript-Konsole, um die Eigenschaften des Fensterobjekts aufzulisten, aber ein anderer Fehler war in der Art, die verhindert, dass mein Objekt ein untergeordnetes Fenster sein. Ich schätze die schnelle Antwort. – chrisd

Verwandte Themen