Non creare blob, costruiscili

Ecco un avviso per tutti i fan di BlobBuilder: questa funzionalità non sarà più disponibile.

BlobBuilder è un'API utile per creare blob (o file) in JavaScript. È disponibile da Chrome 8, FF 6 e IE 10, ma non è mai stato incluso in Safari e probabilmente non lo sarà mai. Le modifiche recenti alle specifiche dell'API File includono un nuovo costruttore per Blob, che rende essenzialmente irrilevante BlobBuilder. Infatti, le build notturne di Safari lo hanno già disattivato e a breve Chrome inizierà a inviarti avvisi nella console.

Per fare un confronto, di seguito è riportato lo stesso codice che utilizza il costruttore 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);

Comodo! Ora, invece di aggiungere un elemento a un BlobBuilder, possiamo semplicemente creare il Blob da un array di parti di dati. Le parti di dati possono essere di tipi diversi (DOMString, ArrayBuffer, Blob) e in qualsiasi ordine. Ad esempio:

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

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