我正在编写一个 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 的内容吗?
(我在 Mozillazine 上发布了同样的问题,如果我在那里得到答案,我会更新这个帖子,反之亦然)。