クロム
NPAPI プラグインと通信するためにすべてbackground.htmlを使用する複数の html ページを持つ (chrome.* API と Cross-Origin Requests を使用することを除いて) Web アプリのように動作する Chrome 拡張機能があります。
拡張機能の構造 (拡張機能のルートから) は次のとおりです。
- background.html
- plugin/ (NPAPI プラグイン バンドル)
- フロントエンド/
- main.html
- foo.html
- bar.html
- ..
拡張機能のインストール時に background.html が読み込まれ、NPAPI プラグインが読み込まれ、無期限に実行されます (ブラウザーが閉じるか、拡張機能が非アクティブ化/削除されるまで)。
拡張機能のツールバー ボタンをクリックすると、main.htmlが開き、他のページ foo.html および bar.html にアクセスするための UI ナビゲーションが提供されます。
これらのページのいずれかを使用chrome.extension.getBackgroundPage()
して、NPAPI プラグインのメソッドを呼び出し、応答を同期的に受信します。
ファイアフォックス
バックグラウンド NPAPI プラグインに関しては、これは以前の私の質問ですでに回答されています。
現在のアドオン SDK で利用可能なオプションから、Firefox はメッセージの受け渡しを JSON シリアライズ可能な値に制限しているため、NPAPI プラグイン メソッドを直接呼び出すことができなくなりました (プラグインの戻り値を渡すことで解決しました)。
残りの問題は、フロントエンド アプリ ページに関するものです。これはローカルであり、信頼できるスクリプトである必要があります。それらをPanelsとしてロードすることを実験しましたが、 Panels は完全な UI ページには適していないように見えますが、情報の小さな断片には適していないようです。
プログラムですべてのページに page-mod contentscript を挿入せずにこれらのページをロードする方法はありますか? (これには、ページ ナビゲーション時に新しいスクリプトを挿入する必要もあります)。