Webextension DataView构造函数不起作用

时间:2017-01-23 14:45:54

标签: javascript firefox-webextensions

我使用的是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

1 个答案:

答案 0 :(得分:0)

我担心这只是Firefox中的bug。我正在为Firefox 54修复此问题。

如果使用不同的TypedArrays来包装ArrayBuffer而不是DataView,它应该可以工作。