Đừng tạo blob, hãy tự tạo

Xin gửi thông báo đến tất cả những người hâm mộ BlobBuilder của bạn. Hẹn gặp lại bạn!

BlobBuilder là một API thuận tiện để tạo Blob (hoặc Tệp) trong JavaScript. Đã có mặt từ Chrome 8, FF 6 và IE 10 nhưng chưa bao giờ được xuất bản trong Safari và có khả năng sẽ không bao giờ. Các thay đổi gần đây về thông số kỹ thuật đối với File API bao gồm một hàm khởi tạo mới cho Blob, điều này về cơ bản khiến BlobBuilder không liên quan. Trên thực tế, trình duyệt Safari đã tắt tính năng này và Chrome sẽ sớm bắt đầu cảnh báo bạn trong bảng điều khiển.

Để so sánh, dưới đây là cùng một mã, sử dụng BlobBuilder không dùng nữa và hàm khởi tạo Blob mới. Đoạn mã tạo ra một biểu định kiểu và gắn nó vào 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);

Tiện lợi! Giờ đây, thay vì thêm vào BlobBuilder, chúng ta chỉ cần tạo Blob từ một mảng các phần dữ liệu. Các phần dữ liệu có thể thuộc loại khác nhau (DOMString, ArrayBuffer, Blob) và theo thứ tự bất kỳ. Ví dụ:

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

Ngoài ra, xin lưu ý rằng tham số đối tượng thứ hai là không bắt buộc. Để biết thêm thông tin về những thay đổi này, hãy xem tài liệu MDN trên Blob.