Don' 不要建構 blob,建構 blob

預告 BlobBuilder 的粉絲,在此提醒大家,我們下次見!

BlobBuilder 是便利的 API,可用來在 JavaScript 中建立 Blob (或檔案)。距離 Chrome 8、FF 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);

太棒了!現在,我們不必附加至 BlobBuilder,只要從資料部分陣列建立 Blob 即可。資料部分可以是不同類型的類型 (DOMStringArrayBufferBlob),也可以是任何順序。例如:

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

另請注意,第二個物件參數為選用參數。如要進一步瞭解相關異動,請參閱 Blob 的 MDN 文件