2017-01-03 4 views
0

Firefoxで動作するNPAPIプラグインを実装しました。次に、JavaScript側の関数をコールバックとして受け入れるメソッドを追加しようとしました。POCOタイマーをNPAPIプラグインで使用できません

最初は、このメソッドをJavaScript側ではまったく同じメソッドで呼び出すようにしました。

次に、Poco :: Util :: TimerとTimerTaskを使用してタイマーを実装しようとしました。タイマーやTimerTaskをコード内でインスタンス化しようとすると、Firefoxはプラグインをロードしなくなります。 about:プラグインにはプラグインの痕跡がありません。

私の知る限りでは、プラグインがロードされない理由を理解する方法がなく、NPAPIプラグインを実装する際に、プラグインが何かについての参照を見つけたり、許可したりすることができません。

すべてのポインタが最も役立ちます。必要に応じてコードを投稿することができます。

+0

NPAPIのサポートが来月のリリースでFirefoxから削除されることをご存知ですか? – taxilian

+0

はい、私がNPAPIを選んだ唯一の理由は、まずPPAPIを見ていて、必要なものを一つもできないということです。これはメソッドを直接呼び出してプラグインのプロパティを読み取ることです。これは商用プロジェクト(NPAPIベースのプラグインを使用して独自のプラットフォームで実行されているJavaScriptアプリケーションのテストと検証)のためのものです。 – MayaPosch

+0

プラグインを有効にするための特別なコマンドラインフラグなしでPPAPIを使用することはできません... NPAPIの代わりとはなりません。 – taxilian

答えて

1

NPAPIプラグインについて理解する必要がある主な点は、いずれかの方法での代替スレッドからブラウザと対話できないことです。

最初に最初のテストに戻ってきましたが、(InvokeDefaultを使用して)渡されたNPObjectを呼び出すとすぐに作業する必要があったはずです。

あなたのタイマーでは、おそらく別のスレッドで実行しているか、プラグインスレッドでメッセージループを奪回しようとしていると思います。両方とも問題が発生します。あなたはFireBreathを見ましたか? FireBreath 1は、おそらくNPAPIの実装の詳細をすべて知る必要なく、必要なものすべてを提供します。

+0

私はFirebreathを見ましたが、プロジェクトがそれ以上維持されているかどうかはわかりませんでした。 Poco Timerがプラグインのメッセージループでうまくやっていないのは正しいでしょう。元のコード(デフォルトのメソッドを直ちに呼び出す)にもう一度試してみますが、プラグインは非常に難しいものです。 – MayaPosch

+0

維持されるのは相対的な用語です。貢献する必要があると感じる人は誰もいないようだし、大きなバグもありませんが、著者(私)はまだまだです。 – taxilian

+0

助けていただきありがとうございます。私はそれを受け取るメソッドでコールバックを直接呼び出すことに戻り、JavaScriptエラー(JSON.stringify()インスタンスによるものです)別のものに埋め込まれている)。 – MayaPosch

関連する問題