Condividi tramite


IE10 中的全新 Blob 构造函数

Windows 8 Release Preview 中的 IE10 新增了对 Blob 构造函数的支持。我们以前曾经撰写展示了 IE10 对 BlobBuilder 接口的支持,还在文件:编写 W3C 工作草稿中介绍了进展中的接口。该接口允许开发人员在客户端 PC 上处理文件。最近,W3C 工作组弃用了 BlobBuilder 接口以支持全新的 Blob 构造函数。本博文将说明二者之间的差别。

比较 Blob 构造函数和 BlobBuilder 接口

Blob 构造函数和 BlobBuilder 接口均允许 Web 开发人员在客户端创建文件。它们之间的差别在于语法。BlobBuilder 要求在单独调用附加方法时附加 Blob 的各个部分,而 Blob 构造函数可以使用一个参数数组。以下是如何使用 BlobBuilderBlob 构造函数创建简单文本文件:

// 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 的数组内容和一个可选的字典对象,其包含两个成员:typeendings。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