IE10 における新しい Blob コンストラクター
Windows 8 Release Preview の IE10 では Blob
コンストラクター (英語) のサポートが追加されています。File API: Writer W3C 草案 (英語) で進行中のインターフェイスである BlobBuilder
インターフェイス (英語) の IE10 におけるサポートについては、以前に紹介し、デモで確認 (英語) していただきました。このインターフェイスを使用すると、開発者はクライアント PC 上のファイルを処理できます。最近、W3C ワーキング グループは新しい Blob
コンストラクター (英語) を支持し、BlobBuilder
インターフェイス (英語) を非推奨扱いとしました。この記事では、これら 2 つの違いについて説明します。
Blob コンストラクターと BlobBuilder インターフェイスの比較
Blob
コンストラクターと BlobBuilder
インターフェイスのどちらを使っても、Web 開発者はクライアント上にファイルを作成できます。違いは構文です。BlobBuilder
では、append メソッドを別に呼び出すときに BLOB の各部分を追加する必要があるのに対し、Blob
コンストラクターは引数の配列を取ることができます。それでは、BlobBuilder
と Blob
の両方を使って、単純なテキスト ファイルを作成する方法を見てみましょう。
// 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 に挿入するコンテンツの配列とオプションの辞書オブジェクトという 2 つの引数を取ります。辞書オブジェクトには、type
と endings
の 2 つのメンバーを含めることができます。BLOB のコンテンツの配列には、BLOB オブジェクト、テキスト文字列または配列バッファーを含めることができます。
Firefox および Chrome の最新バージョンも Blob
コンストラクターをサポートしています。IE10 では、新しい Blob
コンストラクターに加えて、プレフィックスが付いた 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
を使って構築されているかがログ記録されます。
Blob
コンストラクターを IE10 に追加すると、ブラウザーが異なっても動作する標準準拠のコードを記述できます。
— Internet Explorer 担当グループ プログラム マネージャー Sharon Newman