2

NP API プラグインの関数は NPObject を作成し、javascript に返します。次に、返された NPObject を持つ JavaScript 変数が、プラグインの他の関数のパラメーターとして使用されます。例えば

var obj = plugin.GetObject()

plugin.UseObject( obj )

ただし、2 番目の関数 (UseObject) では、パラメーターの値は元の NPObject ではなく、NPObject JS ラッパー クラスです。NPObject JS ラッパー クラスのインスタンスから元の NPObject を取得する方法はありますか?

4

1 に答える 1

4

簡単な答え:できません。

より複雑な答え:一部のブラウザーは元のオブジェクトを提供しますが、最近はほとんど提供されません。また、不透明なNPObjectインターフェースを超えて逆参照して、基になるオブジェクトに戻る方法はありません。

別の解決策:そのように取得しようとする代わりに、NPObjectに一意のIDを追加し、ポインターにグローバルマップを追加します。次に、オブジェクトと思われるNPObjectを取得したら、メソッドを呼び出して(またはプロパティを取得して)一意のIDを取得すると、ポインターを検索できます。

これは、すべてのブラウザで一貫して機能することがわかった唯一の方法です。

于 2012-11-10T20:22:59.920 に答える