Don' 不要建構 blob,建構 blob

提醒所有 BlobBuilder 粉絲,這個功能即將停用!

BlobBuilder 是用於在 JavaScript 中建立 Blob (或檔案) 的實用 API。這項功能自 Chrome 8、Firefox 6 和 IE 10 推出以來就存在,但從未在 Safari 中推出,未來也可能不會推出。File API 近期的規格變更包括 Blob 的新建構函式,這基本上會使 BlobBuilder 變得無關緊要。事實上,Safari 的夜間版本已停用這項功能,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。資料部分可以是不同類型 (DOMStringArrayBufferBlob),且順序不限。例如:

var blob = new Blob(['1234567890', blob, arrayBuffer]);

請注意,第二個物件參數為選用參數。如要進一步瞭解這些變更,請參閱 Blob 的 MDN 文件