我使用的是Firefox 50.1.0。我创建了以下Web扩展:
的manifest.json
{
"content_scripts": [
{
"matches": ["http://exifdata.com/"], // sample site
"js": ["index.js"]
}
],
"manifest_version": 2,
"name": "Test",
"version": "0.0.0"
}
index.js
function fileToDataView(file) {
var reader = new FileReader();
reader.onload = function (e) {
console.log(new DataView(e.target.result)); // empty Dataview
};
reader.onerror = function (error) {
console.log(error); // no error occurs
};
reader.readAsArrayBuffer(file);
}
var nodes = document.querySelectorAll('input[type=file]')
nodes.forEach(function (node) {
node.onchange = function (event) {
fileToDataView(event.target.files[0]);
}
})
当我上传文件时,会调用函数fileToDataView
。
在此函数中,reader.onload会记录new DataView()
,但它是一个空的dataView对象,而不是带有参数e.target.result
的dataView。
我做错了什么?问题是我想在之后调用.getInt8()
,但会抛出错误is not a function
。
完整代码为here。
答案 0 :(得分:0)
我担心这只是Firefox中的bug。我正在为Firefox 54修复此问题。
如果使用不同的TypedArrays来包装ArrayBuffer而不是DataView,它应该可以工作。