Webextension DataView 构造函数不工作
Webextension DataView constructor not working
我使用的是 Firefox 50.1.0。我创建了以下网络扩展:
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.
恐怕这只是 Firefox 中的一个 bug。我正在为 Firefox 54 修复此问题。
如果您使用不同的 TypedArrays 来包装您的 ArrayBuffer 而不是 DataView,它应该可以工作。
我使用的是 Firefox 50.1.0。我创建了以下网络扩展:
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
.
我做错了什么?问题是我想在之后调用 .getInt8()
但抛出了错误 is not a function
。
完整代码为 here.
恐怕这只是 Firefox 中的一个 bug。我正在为 Firefox 54 修复此问题。
如果您使用不同的 TypedArrays 来包装您的 ArrayBuffer 而不是 DataView,它应该可以工作。