2011-01-05 4 views
1

DOM要素のハンドルを取得する方法については読んだことがあります。 これは非常に便利なリンクでした:http://forums.mozillazine.org/viewtopic.php?f=27&t=1521545NPAPI - プラグイン内からjavascriptオブジェクト/関数を使用する

私の作成したオブジェクトまたは任意の関数のJavascript var /オブジェクトのハンドルを取得できますか?今、ページの読み込みで

、私はこのような何かを実行するスクリプトを持っている...

var controller = new Controller() 

または

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

、私のプラグインの中から、私はからメソッドを呼び出すことができるようにしたいです私のコントローラオブジェクト。または、関数callmeを実行します。 これは可能ですか?これをどうやって行うのですか?

おかげで、

クリス

答えて

7

あなたのリンクから、あなたはDOMのウィンドウのNPObjectを取得する方法を知っています。あなたが知る必要があることは、すべてのグローバルなjavascript変数が実際にウィンドウのプロパティであることです。

var controller = new Controller(); 

あなたがwindow.controllerがあなたの変数であり、グローバルスコープでこれをやったので、あなただけ行う必要がある場合:

/* 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); 

あなたは、あなたのControllerオブジェクトのプロパティにアクセスすることができますかメソッドを呼び出します。コントローラが関数の場合、NPN_InvokeDefaultで呼び出すことができます。

BTW、FireBreathは、このほとんどを自動化します。

+0

大変ありがとうございます。あなたのブログと3部構成のプラグインのチュートリアルを読んだことがありますが、途中でDOM/javascriptのノウハウが不足しているようです。私は上記のことが真であると仮定しようとし、ウィンドウオブジェクトのプロパティを一覧表示するためにchromeのjavascriptコンソールを使用しましたが、別のエラーが私のオブジェクトがウィンドウの子にならないようにしていました。私は迅速な対応に感謝します。 – chrisd

関連する問題