本文介绍了斑点构造浏览器的兼容性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我深化发展,其中我收到存储在uint8Array图像数据的应用程序。
我那么这个数据转换为一个斑点,然后生成图像的URL。

简体code从服务器获取数据:

  VAR阵列;VAR REQ =新XMLHtt prequest();
VAR URL =IMG /+ +的uuid_+ segmentNumber +JPG;
req.open(GET,网址,真实);
req.responseType =arraybuffer;
req.onload =功能(oEvent){
    VAR数据= req.response;
    阵列=新Int8Array(数据);
};

构造器:

  =出新的Blob([数据] {类型:数据类型});

团块contsructor有问题。它工作正常,对移动和桌面设备的Chrome以外的所有浏览器。

斑点的使用:

  //收到Uint8Array使用AJAX这里
//数组= ...
//创建BLOB
VAR JPEG =新的Blob([array.buffer] {类型:图像/ JPEG});
VAR URL = DOMURL.createObjectURL(JPEG);
img.src =网址;

桌面Chrome浏览器给我的 WARNNING ArrayBuffer值在斑点构造pcated德$ P $。使用ArrayBufferView来代替。

移动Chrome浏览器给我的错误非法构造

如果我改变构造函数的Chrome浏览器失败在其他浏览器。


解决方案

明白了你的code工作。我只需要改变一些小细节:

 如果(e.name =='类型错误'和;&安培; window.BlobBuilder){
        VAR BB =新BlobBuilder();
        bb.append(数据);
        OUT = bb.getBlob(数据类型);
        console.debug(情况2);
    }

My function(constructor) that works now for all browsers:

var NewBlob = function(data, datatype)
{
    var out;

    try {
        out = new Blob([data], {type: datatype});
        console.debug("case 1");
    }
    catch (e) {
        window.BlobBuilder = window.BlobBuilder ||
                window.WebKitBlobBuilder ||
                window.MozBlobBuilder ||
                window.MSBlobBuilder;

        if (e.name == 'TypeError' && window.BlobBuilder) {
            var bb = new BlobBuilder();
            bb.append(data);
            out = bb.getBlob(datatype);
            console.debug("case 2");
        }
        else if (e.name == "InvalidStateError") {
            // InvalidStateError (tested on FF13 WinXP)
            out = new Blob([data], {type: datatype});
            console.debug("case 3");
        }
        else {
            // We're screwed, blob constructor unsupported entirely
            console.debug("Errore");
        }
    }
    return out;
}

这篇关于斑点构造浏览器的兼容性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 19:24