blob は構築せず、構築する

Eric Bidelman 氏

BlobBuilder のファンの皆さん、お知らせです。さようなら!

BlobBuilder は、JavaScript で Blob(または Files)を作成するための便利な API です。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]);

また、2 番目のオブジェクト パラメータは省略可能です。これらの変更の詳細については、Blob の MDN ドキュメントをご覧ください。