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,它应该可以工作。