提醒所有 BlobBuilder 粉丝,和我们说拜拜了!
BlobBuilder
是一种使用 JavaScript 创建 Blob(或文件)的便捷 API。它从 Chrome 8、FF 6 和 IE 10 就已经存在,但从未在 Safari 中推出,而且可能永远也不会推出。最近对 File API 的规范变更包括了 Blob
的新构造函数,这实质上使得 BlobBuilder
变得无关紧要。事实上,Safari Nightly 已经停用了这项功能,Chrome 很快就会开始在控制台中向您发出警告。
为了进行比较,下面是使用已废弃的 BlobBuilder
和新的 Blob
构造函数的相同代码。该代码段会创建一个样式表,并将其附加到 DOM。
BlobBuilder()
:
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||
window.MozBlobBuilder || window.MSBlobBuilder;
window.URL = window.URL || window.webkitURL;
var bb = new BlobBuilder();
bb.append('body { color: red; }');
var blob = bb.getBlob('text/css');
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = window.URL.createObjectURL(blob);
document.body.appendChild(link);
Blob()
:
window.URL = window.URL || window.webkitURL;
var blob = new Blob(['body { color: red; }'], {type: 'text/css'});
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = window.URL.createObjectURL(blob);
document.body.appendChild(link);
非常好!因此,现在我们只需根据数据部分数组创建 Blob
,而不必附加到 BlobBuilder
。数据部分可以是不同类型的(DOMString
、ArrayBuffer
、Blob
),并且可按任意顺序排列。例如:
var blob = new Blob(['1234567890', blob, arrayBuffer]);
另请注意,第二个对象参数是可选的。如需详细了解这些变更,请参阅有关 Blob 的 MDN 文档。