1

Web ページの JavaScript (JS) から拡張機能の JS に大きなバイナリ データ (new Uint8Array(10000000) など) を渡そうとしています。これらのデータを nsIBinaryOutputStream/nsIFile (自分のページから呼び出すことはできません) によって拡張子からファイルに保存する必要があります。[ATM ページの JS から (大規模/バイナリ) データをローカル マシンに保存する他の方法については知りません。]

特権ページと非特権ページの間の相互作用について赤字にしましたが、これは文字列を渡す場合にのみ役立ちます。base64 との間で 10MB を変換するのは良い考えではないと思います。

  • そのようなデータを拡張機能に渡すことさえ可能ですか?
  • はいの場合、それを行う方法は?
  • JS XPCOM コンポーネントを使用するべきではありませんか?

提案していただきありがとうございます。

4

2 に答える 2

1

OK、 Web ページから拡張機能に任意のオブジェクトを渡す方法を解決しました。

Web ページの JavaScript (JS) では:

var element = document.createElement("foo");
document.documentElement.appendChild(element);
var event = document.createEvent("CustomEvent");
event.initCustomEvent("bar", true, false, anyObject);
element.dispatchEvent(event);

拡張 JS では:

document.addEventListener("bar", function(e) {
  // use e.detail here
 }, false, true);

ここで概念実証。

于 2012-12-19T13:42:48.980 に答える
0

ファイルにデータがある場合は、データを使用nsIWebBrowserPersistしてファイルに直接ダウンロードできます。このファイルは圧縮可能であり、解凍することができます。これらのページで見つけることができる多くの情報(例を含む):

nsiWebBrowserPersistを使用してファイルをダウンロードする

ファイルを解凍します

于 2012-12-17T14:28:51.737 に答える