1

MacでChrome用のNPAPIプラグインを作成しようとしています。基本的なnpapiプラグインと基本的なプラグインを作成manifest.jsonbackground.htmlてロードしました。私background.htmlembedMimetypeによってプラグインをフェッチするためのタグを持っています。

パッケージ化されていない拡張機能をChromeからロードし、c ++コード(xcode4)をデバッグしようとすると、関数が次の順序で呼び出されていることがわかりました。

  1. NP_Initialize
  2. NP_GetEntryPoints
  3. NPP_New
  4. NPP_Destroy

この後、拡張機能アイコンをクリックすると、popup.htmlが実行されます。私popup.htmlはこれらの行を持っています:

ライン1:

var pluginObj = document.getElementById("pluginId");

2行目:

pluginObj.Myfunction();

ただし、1行目では、NP_Getvalue()関数が呼び出されないため、「スクリプト可能なNPObject」はインスタンス化されません。2行目で、ChromeJavaScriptコンソールは次のように述べています。

Error in event handler for 'undefined': Object #<HTMLEmbedElement> has no method 'Myfunction' TypeError: Object #<HTMLEmbedElement> has no method 'Myfunction'

なぜNPP_Destroy関数は?の直後に呼び出されるのNPP_New functionですか?

4

1 に答える 1

4

プラグインで描画とイベント モデルのネゴシエーションを行いましたか? Chrome 22 for Mac から、長い間非推奨だった QuickDraw と Carbon モデルはサポートされなくなりました。プラグインが最新のモデルをネゴシエートしない場合、init の直後に破棄されます。これを行うコード例については、こちらを参照してください。

(はい、32 ビット プラグインのデフォルト モデルが古い非推奨モデルであることは残念ですが、既存のすべてのプラグインが古い動作を想定しているため、仕様でそれを変更する方法はありません。)

于 2012-10-11T09:15:25.453 に答える