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

אריק בידלמן

תודה לכל מעריצי BlobBuilder, להתראות!

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

לשם השוואה, בהמשך מופיע אותו הקוד באמצעות BlobBuilder שהוצא משימוש והבנאי החדש 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.