Novo construtor de Blob no IE10

O IE10 no Windows 8 Release Preview adiciona suporte ao construtor de Blob. Já escrevemos sobre e demonstramos o suporte do IE10 para uma interface BlobBuilder; uma interface em progresso no File API: Rascunho de trabalho do Writer W3C. Esta interface permite aos desenvolvedores trabalhar com arquivos no PC cliente. Recentemente, o grupo de trabalho do W3C desaprovou a interface BlobBuilder em prol de um novo construtor de Blob. Esta postagem explica as diferenças entre os dois.

Comparando o construtor de Blob e a interface BlobBuilder

Tanto o construtor de Blob quanto a interface BlobBuilder permitem aos desenvolvedores da Web criar arquivos no cliente. A diferença está na sintaxe. Enquanto o BlobBuilder requer que cada porção do blob seja reunida durante outra chamada para o método de acréscimo, o construtor de Blob pode apresentar uma matriz de argumentos. Veja como criar um arquivo de texto simples usando tanto o BlobBuilder quanto o construtor de 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");

O construtor de Blob apresenta dois argumentos: a matriz de conteúdo a ser inserido dentro do blob e um objeto de dicionário opcional, que pode incluir dois membros, type e endings. A matriz de conteúdo para o blob pode conter objetos blob, cadeias de texto ou buffers de matriz.

As versões recentes do Firefox e do Chrome também oferecem suporte ao construtor de Blob. O IE10 ainda oferece suporte à interface MSBlobBuilder prefixada, além do novo construtor de Blob. Neste momento, o Firefox e o Chrome também oferecem suporte à interface BlobBuilder de prefixos dos fornecedores.

Detecção do recurso construtor de Blob

Assim como todos os novos recursos, nós recomendamos o uso de detecção do recurso para determinar se o construtor de Blob está disponível no navegador onde o seu código está sendo executado. Você pode usar algo como:

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

}

Se você executar a demonstração de Test Drive do BlobBuilder com a janela do console das Ferramentas de Desenvolvedor F12 aberta, ela registrará se os blobs estão sendo construídos por meio do construtor de Blob ou por meio do BlobBuilder.

O acréscimo do construtor de Blob no IE10 permite a você escrever códigos compatíveis que funcionem em todos os navegadores.

—Sharon Newman, gerente de programas, Internet Explorer