2

入力ファイルを処理し、HTML や SVG を出力するデータ分析コードがあります。これは C++ であり、CPU を集中的に使用します。

ブラウザを離れることなくコードを使用できるように、ブラウザ プラグインを作成したいと考えています。Google の Native Client フレームワークと Pepper API は興味深いように思えますが、おそらく少し制限が強すぎるでしょう。Native Client モジュールから Pepper 経由で次のことを行うことは可能ですか?

  1. ユーザーのファイルシステム上のローカル ファイルにアクセスします。NaClサンドボックスが一般的にこれを防ぐことは知っていますが、ユーザーが選択したファイルをJavascriptレイヤーからNaCLに渡す方法は確かにありますか?

  2. HTML または SVG をブラウザに出力します。C++ が含まれているドキュメントの DOM を変更できる方法はありますか?

4

2 に答える 2

4

(1)についてはあまり確信が持てませんが、(2)は直接可能ではありません。

(1) の場合、Pepper API は、WebFS が JavaScript で許可するのと同じ方法で、ファイル ピッカーがファイルを NaCl モジュールで使用できるようにすることを許可することになっています。これの実装状況はわかりません。

(2) の場合、C++ コードは DOM を直接操作できません。ただし、NaCl モジュールは PostMessage インターフェイスを使用して文字列を JavaScript コードに送信し、実際の DOM 操作を行うことができます。Chrome では、NaCl モジュールがイベント ハンドラであることに注意してください。これは、何らかのイベントによって計算が開始され、同期的に実行される (そして CPU を集中的に使用する) 場合、イベント ハンドラーが戻るのに時間がかかりすぎるため、ブラウザーのインタラクティブな応答性が失われるか、動作が不安定になることを意味します。より良い方法は、バックグラウンド スレッドを生成してイベント ハンドラーで作業を行い (またはワーカー スレッドを起動し)、イベント ハンドラーからすぐに戻ることです。計算が完了し、結果の準備ができたら、PostMessage で結果を返し、JavaScript スレッドを (再びイベント ハンドラーとして) 起動させ、DOM 操作を実行させます。

継続渡しスタイルって楽しいですよね?

于 2012-02-03T00:25:55.653 に答える
0
  1. ファイル入力要素と JavaScript を使用して HTML ファイル システムにファイルをアップロードすると、JavaScript と NaCl の両方でファイルを操作できます。このnacl_ioライブラリは、 などの標準の posix メソッドを実装しているfreadため、ファイルを保存すると、非常に簡単です。JSについてはこちらを参照してください (廃止予定のメッセージに惑わされないでください。Chrome に実装されています)。NaCl についてはこちらを参照してください。

  2. 前述@Bennet Yeeのように、NaCl モジュールはページを変更することはできませんが、代わりに、JavaScript によって処理されるブラウザー ウィンドウにメッセージを返します。おそらく、JSON データを返したいと思うでしょう。メッセージング システムに関する Google のドキュメントについては、こちらを参照してください。

于 2016-02-17T08:20:38.840 に答える