Nouveau constructeur Blob dans IE10

IE10 dans Windows 8 Release Preview prend en charge un constructeur Blob. Nous avons écrit à propos de et mis en avant la prise en charge dans IE10 d'une interface BlobBuilder, interface en cours de progression dans l'ébauche de travail du W3C sur File API: Writer. Cette interface permet aux développeurs d'utiliser des fichiers sur le PC client. Récemment, le groupe de travail du W3C a déconseillé l'interface BlobBuilder en faveur d'un nouveau constructeur Blob. Ce billet explique les différences entre les deux.

Comparaison du constructeur Blob et de l'interface BlobBuilder

Le constructeur Blob et l'interface BlobBuilder permettent tous les deux aux développeurs Web de créer des fichiers sur le client. La différence réside dans la syntaxe. Tandis que BlobBuilder requiert que chaque portion du blob soit ajoutée au cours d'un appel séparé à la méthode d'ajout, le constructeur Blob peut prendre en compte un tableau d'arguments. Voici comment créer un fichier texte simple à l'aide de l'interface BlobBuilder et du constructeur 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");

Le constructeur Blob prend en compte deux arguments, le tableau de contenu à placer dans le blob et un objet de dictionnaire facultatif pouvant inclure deux membres, type et endings. Le tableau de contenu du blob peut contenir des objets blob, des chaînes de texte ou des mémoires tampons de tableaux.

Les versions récentes de Firefox et de Chrome prennent également en charge le constructeur Blob. IE10 prend toujours en charge l'interface MSBlobBuilder préfixée en plus du nouveau constructeur Blob. Actuellement, Firefox et Chrome prennent également en charge leur interface BlobBuilder préfixée.

Détection du constructeur Blob

Comme avec toutes les nouvelles fonctionnalités, nous recommandons l'utilisation de la détection des fonctionnalités pour déterminer si le constructeur Blob est disponible dans le navigateur sur lequel votre code s'exécute. Vous pouvez utiliser quelque chose de similaire à ceci :

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

}

Si vous exécutez la démonstration de test BlobBuilder avec la console des outils de développement F12 ouverte, elle indiquera si les objets blob sont créés via le constructeur Blob ou via BlobBuilder.

L'ajout du constructeur Blob dans IE10 vous permet d'écrire du code normalisé qui fonctionne sur tous les navigateurs.

—Sharon Newman, Chef de projet, Internet Explorer