Non creare blob, costruiscili

Avviso a tutti i fan di BlobBuilder: ciao ciao!

BlobBuilder è una pratica API per la creazione di BLOB (o file) in JavaScript. È disponibile da Chrome 8, FF 6 e IE 10, ma non è mai stato spedito in Safari e probabilmente non lo sarà mai. Le recenti modifiche alle specifiche dell'API File includono un nuovo costruttore per Blob, il che sostanzialmente rende BlobBuilder non pertinente. Infatti, è già stata disattivata dalla funzionalità notturna di Safari e Chrome inizierà a avvisarti nella console molto presto.

A titolo di confronto, di seguito è riportato lo stesso codice che utilizza l'BlobBuilder deprecato e il nuovo costruttore Blob. Lo snippet crea un foglio di stile e lo aggiunge al 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);

Pratico! Quindi ora, invece di aggiungere un elemento BlobBuilder, possiamo semplicemente creare Blob da un array di parti di dati. Le parti di dati possono essere di tipo diverso (DOMString, ArrayBuffer, Blob) e in qualsiasi ordine. Ad esempio:

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

Inoltre, tieni presente che il secondo parametro oggetto è facoltativo. Per ulteriori informazioni su queste modifiche, consulta la documentazione MDN su Blob.