ちょっと質問があります:
ツールバーにポップアップ ページを追加する chrome 拡張機能があります。ユーザーからの入力を受け取り、XML ファイルを生成する NPAPI dll を呼び出します。NPAPI dll が作業を終了した後、新しく生成された XML ページを開く新しいタブを作成できるようにしたいと考えています。
誰でもこれで私を助けることができますか?
ありがとう。
ちょっと質問があります:
ツールバーにポップアップ ページを追加する chrome 拡張機能があります。ユーザーからの入力を受け取り、XML ファイルを生成する NPAPI dll を呼び出します。NPAPI dll が作業を終了した後、新しく生成された XML ページを開く新しいタブを作成できるようにしたいと考えています。
誰でもこれで私を助けることができますか?
ありがとう。
理想的には、UI 動作のロジックをプラグインではなく、拡張機能に入れます。プラグインは拡張機能に XML ファイルの場所を伝え、拡張機能が残りを処理する必要があります。
これには、次の 2 つの方法があります。
場所を同期して返すのは簡単ですInvoke()
。プラグインの実装から直接作業を行い、ファイルの場所を含む文字列をスクリプトに返します。
もちろん、これには処理が完了するまでメイン (および GUI) スレッドがブロックされるという欠点があり、処理が迅速に行われない場合は選択肢がありません。
非同期で返すにはもう少し手間がかかります。理想的には、処理が完了したときに呼び出されるコールバック関数を拡張機能で指定できるようにします。これは、addEventListener()
それに応じて処理するか、スクリプトが XML 処理を開始するときにパラメーターとしてコールバックを渡すことを許可することで実現できます。その後、XML 処理関数は、実際の作業を行う別のスレッドを開始またはフィードし、すぐに戻ります。処理が完了したらNPN_InvokeDefault()
、保存された関数オブジェクトを呼び出して呼び出します。
注意: JavaScript の呼び出しは、常にメイン スレッドで行う必要があります。
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 ファイルを返して、拡張機能内で開くと便利です。