我正在使用加载项构建器,我需要接收二进制数据(图像)。我想使用request
模块执行此操作,但您可以从文档中看到:
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/addon-kit/docs/request.html
只有text
和json
属性,raw
不存在。
我应该如何在附加脚本中接收二进制数据?
答案 0 :(得分:4)
您无法使用request
模块执行此操作,您必须通过chrome authority使用常规XMLHttpRequest
。这样的事情应该有效:
var {Cc, Ci} = require("chrome");
var request = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"]
.createInstance(Ci.nsIJSXMLHttpRequest);
request.open("GET", "...");
request.onload = function()
{
onUnload.unload();
var arrayBuffer = request.response;
if (arrayBuffer)
{
var byteArray = new Uint8Array(arrayBuffer);
...
}
};
request.onerror = function()
{
onUnload.unload();
}
request.send(null);
var onUnload = {
unload: function()
{
// Make sure to abort the request if the extension is disabled
try
{
request.abort();
}
catch (e) {}
}
};
require("unload").ensure(onUnload);
如果您的扩展程序突然被禁用,确保请求中止的机制相当尴尬,这是request
模块存在的主要原因,而不是简单地给您XMLHttpRequest
。请注意,请求完成后调用onUnload.unload()
非常重要,否则Add-on SDK会将其保留在卸载时调用的方法列表中(内存泄漏)。请参阅documentation of unload
module。