首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >readAsBinaryString的IE10替代方案

readAsBinaryString的IE10替代方案
EN

Stack Overflow用户
提问于 2013-09-03 01:03:48
回答 4查看 17.2K关注 0票数 9

readAsBinaryString,JavaScript FileReader对象的一种方法,在IE10中似乎不受支持。我尝试了以下几种方法,如这篇HTML5 Rocks文章中所建议的

代码语言:javascript
复制
String.fromCharCode.apply(null, new Uint16Array(buffer));

但是,这会导致Out of stack space错误。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-03 01:32:32

我找到了答案这里

代码语言:javascript
复制
var binary = "";
var bytes = new Uint8Array(buffer);
var length = bytes.byteLength;
for (var i = 0; i < length; i++) {
  binary += String.fromCharCode(bytes[i]);
}
票数 20
EN

Stack Overflow用户

发布于 2016-01-12 11:31:12

根据大卫·琼斯的回答,我写了这个方法。try/catch在IE10/11中处理readAsBinaryString异常,并称自己为"IE模式“:

代码语言:javascript
复制
function readBinaryStringFromBlob(blob, callback, ie) {
    var reader = new FileReader();
    if(!ie) {
        reader.addEventListener("loadend", function () {
            callback(reader.result);
        });
        try {
            reader.readAsBinaryString(blob);
        } catch (err) {
            readBinaryStringFromBlob(blob, callback, true);
        }
    } else {
        reader.addEventListener("loadend", function () {
            var binary = "";
            var bytes = new Uint8Array(reader.result);
            var length = bytes.byteLength;
            for (var i = 0; i < length; i++) {
                binary += String.fromCharCode(bytes[i]);
            }
            callback(binary);
        });
        reader.readAsArrayBuffer(blob);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2016-09-27 12:47:40

如果你想要一些更简单的东西和ier 2015--那么这可能就是你想要的:

代码语言:javascript
复制
  const reader = new FileReader();
  reader.onerror = e => alert("File cannot be opened");

  if (reader.readAsBinaryString) {
     reader.onload = e => alert(e.target.result));
     reader.readAsBinaryString(file);
  }
  else {
     // Catering for IE 10/11
     reader.onload = e => {
        const bytes = new Uint8Array(e.target.result);
        const binary = bytes.reduce((acc, byte) => acc + String.fromCharCode(byte), "");
        alert(binary);
     };
     reader.readAsArrayBuffer(file);
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18582643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档