אל תיצרו blobs, אבל צרו אותן

שימו לב, כל המעריצים של BlobBuilder: התכונה הזו תוצא משימוש.

BlobBuilder הוא ממשק API שימושי ליצירת Blobs (או קבצים) ב-JavaScript. התכונה הזו קיימת מאז Chrome 8, ‏ FF 6 ו-IE 10, אבל היא אף פעם לא נכללה ב-Safari, וכנראה גם לא תהיה כלולה בו. שינויים ספציפיים שבוצעו לאחרונה ב-File API כוללים קונסטרוקטור חדש ל-Blob, שבעקבותיו BlobBuilder הופך ללא רלוונטי. למעשה, כבר השבתנו את התכונה בגרסאות ה-nightly של Safari, ובקרוב תופיע אזהרה ב-Chrome במסוף.

לשם השוואה, בהמשך מופיע אותו קוד עם ה-constructor הישן BlobBuilder וה-constructor החדש Blob. קטע הקוד יוצר גיליון סגנונות ומצרף אותו ל-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);

שימושי! עכשיו, במקום להוסיף ל-BlobBuilder, אפשר פשוט ליצור את ה-Blob ממערך של חלקי נתונים. חלקי הנתונים יכולים להיות מסוגים שונים (DOMString, ‏ ArrayBuffer, ‏ Blob) ובכל סדר. לדוגמה:

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

חשוב גם לזכור שהפרמטר השני של האובייקט הוא אופציונלי. מידע נוסף על השינויים האלה זמין במסמכי העזרה של MDN בנושא Blob.