TypeError: BlobBuilder is not a constructor

var BlobBuilder = window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder;
var bb = new BlobBuilder();
bb.append(arr.stString());

今天在chrome浏览器中这样使用时,出线错误TypeError: BlobBuilder is not a constructor。

解决:

原文地址:http://stackoverflow.com/questions/15293694/blob-constructor-browser-compatibility

0
down vote
accepted
Got it working with your code. I only had to change some little detail:

if(e.name == ‘TypeError‘ && window.BlobBuilder){
        var bb = new BlobBuilder();
        bb.append(data);
        out = bb.getBlob(datatype);
        console.debug("case 2");
    }
bb.append(data); // data must be with no brackets
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;
}
时间: 2024-09-30 11:03:14

TypeError: BlobBuilder is not a constructor的相关文章

TypeError: CleanWebpackPlugin is not a constructor

在项目中引入clean-webpack-plugin打包后报错 new CleanWebpackPlugin(), ^ 项目写法: 引入: cnpm i  clean-webpack-plugin -D webpack.config.js中 const CleanWebpackPlugin = require('clean-webpack-plugin') plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ filename:

使用clean-webpack-plugin小插件报错CleanWebpackPlugin is not a constructor

clean-webpack-plugin是webpack的一个小插件: 由于每次打包的时候有可能文件名称不一样,打包后的文件就叠加到dist目录下了. 所以cleanWebPackPlugin作用就是在每次打包之前,先把dist目录删掉,创建最新的目录,避免一些不必要的文件还留在dist目录下 安装:npm install clean-webpack-plugin -D 正确的使用方法如下: //引入clean-webpack-plugin的包 const { CleanWebpackPlugi

Web 本地图片 canvas 截取上传

我做了一个 Web 本地图片 canvas 截取上传 的demo.发现了几个问题,记录下: 1.  Canvas 元素大小 (css width height) 和表面大小(canvas 自身的 width height 属性)两个概念是不一样的,当两个大小不一致时,坐标需要进行转换计算. // 其中 x, y 是视口坐标 function windowToCanvas(canvas, x, y) { var bbox = canvas.getBoundingClientRect(); retu

vue使用远程在线更新代码

main.js import Vue from 'vue'import App from './App'import router from './router'import Vuex from 'vuex'import store from './store'import axios from 'axios'import VueAwesomeSwiper from 'vue-awesome-swiper'import 'swiper/dist/css/swiper.css'// import

javascript类型系统——Math对象

× 目录 [1]常量 [2]函数 前面的话 javascript使用算术运算符实现基本的算术运算,如果要实现更加复杂的算术运算,需要通过Math对象定义的常量和函数来实现.和其他对象不同,Math只是一个静态对象,而并没有Math()构造函数.实际上,Math只是一个由Javascript设置的对象命名空间,用于存储数学常量和函数.本文将详细介绍Math对象 new Math();//Uncaught TypeError: Math is not a constructor 常量 Math对象一

ES6中的Symbol类型

前面的话 ES5中包含5种原始类型:字符串.数字.布尔值.null和undefined.ES6引入了第6种原始类型--Symbol ES5的对象属性名都是字符串,很容易造成属性名冲突.比如,使用了一个他人提供的对象,想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突.如果有一种机制,保证每个属性的名字都是独一无二的,这样就从根本上防止了属性名冲突.这就是ES6引入Symbol的原因,本文将详细介绍ES6中的Symbol类型 创建 Symbol 值通过Symbol函数生成.这就是说,

JS6-函数1

====函数的扩展 -----ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello World 上面代码检查函数log的参数y有没有赋值,如果没有,则指定默认值为World.这种写法的

JavaScript中‘this’关键词的优雅解释

本文转载自:众成翻译 译者:MinweiShen 链接:http://www.zcfy.cc/article/901 原文:https://rainsoft.io/gentle-explanation-of-this-in-javascript/ 1. this之谜 许多时候,this关键词对我以及许多刚起步的JavaScript程序员来说,都是一个谜.它是一种很强大的特性,但是理解它需要花不少功夫. 对有Java, PHP或者其他常见的编程语言背景的人来说,this仅仅被看成是类方法中当前对象

微信小程序疑问解答

最近总结一篇微信小程序解答,作为小程序填坑人深有体会这里的变化,小程序刚发布消息的时候我就说了一个观点,只要小程序提供的组件或API丰富,稳定,兼容性好,才能实现小程序快速开发的理念,先如今还有很多组件的兼容不理想,有一些还在的优化中,因基于小程序这个平台开发限制很大,只能坐等中...如果想用第三方库来实现,小程序明文规定不支持第三方库的做法,这样做最终小程序审核环节百分百的不通过. 1.scroll-view 在 iOS 上存在 bug 在使用这个组件开发页面的时候,因自带滚动效果,Y 轴滑动