私は Firefox 拡張機能を作成しており、'moz-icon' (例: moz-icon://.img?size=16
) URI のコンテンツを読み取る必要があります。
私は次のコードを持っています:
const Cc = Components.classes;
const Ci = Components.interfaces;
var iOService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
var mozUri = iOService.newURI('moz-icon://.img?size=16', null, null);
var channel = iOService.newChannelFromURI(mozUri);
var inputStream = channel.open(),
binaryInputStream =
Cc["@mozilla.org/binaryinputstream;1"].createInstance(Ci["nsIBinaryInputStream"]);
binaryInputStream.setInputStream(inputStream);
var data = [];
try {
while ((avail = binaryInputStream.available()) > 0)
data = data.concat(binaryInputStream.readByteArray(avail));
binaryInputStream.close(); inputStream.close();
} catch(e) {
}
Windows と Mac では動作しますが、Linux (Ubuntu 12.0 32 ビット) では動作しません。newChannelFromURI を作成しようとすると失敗します (実装されていないと言います)。
moz-icon URI からチャネルを作成する以外に、moz-icon URI の内容を読み取る方法はありますか?
(私は Mozillazine に同じ質問を投稿しました。そこで回答が得られたら、このスレッドを更新します。その逆も同様です)。