Windows 8 Release Preview 中的 IE10 新增了对 Blob 构造函数的支持。我们以前曾经
撰写并展示了 IE10 对 BlobBuilder 接口的支持,还在文件:编写 W3C 工作草稿中介绍了进展中的接口。该接口允许开发人员在客户端 PC 上处理文件。最近,W3C 工作组弃用了 BlobBuilder接口以支持全新的 Blob 构造函数。本博文将说明二者之间的差别。
比较 Blob 构造函数和 BlobBuilder 接口
Blob 构造函数和
BlobBuilder 接口均允许 Web 开发人员在客户端创建文件。它们之间的差别在于语法。BlobBuilder 要求在单独调用附加方法时附加 Blob 的各个部分,而 Blob 构造函数可以使用一个参数数组。以下是如何使用 BlobBuilder 和 Blob 构造函数创建简单文本文件:
// using the Blob constructor
var textBlob1 = new Blob(["Hello", " world!"], { type: "text/plain", endings: "transparent" });
// using the MSBlobBuilder interface
var bb = new MSBlobBuilder();
bb.append("Hello");
bb.append(" world!");
var textBlob2 = bb.getBlob("text/plain");
Blob 构造函数将使用两个参数,要添加到 Blob 的数组内容和一个可选的字典对象,其包含两个成员:type 和 endings。Blob 的数组内容可包含 Blob 对象、文本字符串或数组缓冲。
最新版本的 Firefox 和 Chrome 也同样支持 Blob 构造函数。除全新的 Blob 构造函数之外,IE10 还支持带有前缀的 MSBlobBuilder 接口。目前,Firefox 和 Chrome 也支持他们带有供应商前缀的 BlobBuilder 接口。
检测 Blob 构造函数的功能
如同使用所有新功能,我们
建议使用功能检测来确定是否 Blob 构造函数在您正运行代码的浏览器中可用。您可以使用以下内容:
if (typeof Blob !== "undefined") {
// use the Blob constructor
} elseif (window.MSBlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder) {
// use the supported vendor-prefixed BlobBuilder
} else {
// neither Blob constructor nor BlobBuilder is supported
}
如果您在 F12 开发人员工具控制台窗口打开的情况下运行
BlobBuilder 测试驱动程序演示,则它将记录 Blob 是通过 Blob 构造函数还是通过 BlobBuilder 构建。
IE10 新增的 Blob 构造函数允许您编写符合标准且可以跨浏览器运行的代码。
—Internet Explorer 项目经理 Sharon Newman
标签:IE10IE WebBlobBuilderBlob