1

ちょっと質問があります:

ツールバーにポップアップ ページを追加する chrome 拡張機能があります。ユーザーからの入力を受け取り、XML ファイルを生成する NPAPI dll を呼び出します。NPAPI dll が作業を終了した後、新しく生成された XML ページを開く新しいタブを作成できるようにしたいと考えています。

誰でもこれで私を助けることができますか?

ありがとう。

4

2 に答える 2

0

理想的には、UI 動作のロジックをプラグインではなく、拡張機能に入れます。プラグインは拡張機能に XML ファイルの場所を伝え、拡張機能が残りを処理する必要があります。

これには、次の 2 つの方法があります。

場所を同期して返すのは簡単ですInvoke()。プラグインの実装から直接作業を行い、ファイルの場所を含む文字列をスクリプトに返します。
もちろん、これには処理が完了するまでメイン (および GUI) スレッドがブロックされるという欠点があり、処理が迅速に行われない場合は選択肢がありません。

非同期で返すにはもう少し手間がかかります。理想的には、処理が完了したときに呼び出されるコールバック関数を拡張機能で指定できるようにします。これは、addEventListener()それに応じて処理するか、スクリプトが XML 処理を開始するときにパラメーターとしてコールバックを渡すことを許可することで実現できます。その後、XML 処理関数は、実際の作業を行う別のスレッドを開始またはフィードし、すぐに戻ります。処理が完了したらNPN_InvokeDefault()、保存された関数オブジェクトを呼び出して呼び出します。
注意: JavaScript の呼び出しは、常にメイン スレッドで行う必要があります。

于 2010-10-23T14:54:58.467 に答える
0

NPN_Invokeを介して NPAPI が JavaScript と通信できるようにすることができます。NPN_Invoke を使用すると、特定のNPObjectでメソッドを呼び出すことができます。

たとえば、メソッドNPN_GetStringIdentifierを構築し、それを使用してポップアップでメソッドを実行できます。

NPAPI プラグインから JavaScript に通信する方法については、この記事を参照してください。そこに示されている例は単純ですconsole.debug("Hello from C++")

アップデート

xml ファイルをすぐに開きたいと思っていることに気付きました。拡張フォルダーの場所に XML ファイルを保存しましたか?

C:\Users\[user]\AppData\Local\Google\Chrome\User Data\Default\Extensions\[extension_id]\[extension_version]

次に、で開くことができますchrome.extension.getURL([file]);

ただし、XML ファイルを返して、拡張機能内で開くと便利です。

于 2010-10-22T00:21:19.117 に答える