Skip to content

Instantly share code, notes, and snippets.

@abbotto
Created September 14, 2015 03:40
Show Gist options
  • Save abbotto/9fce26db5c3dc83b13f9 to your computer and use it in GitHub Desktop.
Save abbotto/9fce26db5c3dc83b13f9 to your computer and use it in GitHub Desktop.
Basic Blob Fallback Support
var __support = {
// Blob
Blob: !!window.Blob,
BlobSlice: !!Blob.prototype.slice,
URL: !!window.URL,
}
var prefixes = ['webkit', 'Webkit', 'WebKit', 'moz', 'Moz', 'o', 'O', 'ms', 'Ms', 'MS', 'khtml', 'Khtml', ''];
// Number of prefixes
var i = prefixes.length;
// Prefix window.URL
if(!__support.URL) {
// Fallback for BlobBuilder
while ((i -= 1) > -1) {
window.URL = window.URL || window[prefixes[i] + 'URL'];
}
}
// Prefix Blob.slice
if(!__support.BlobSlice) {
// Fallback for BlobBuilder
while ((i -= 1) > -1) {
Blob.prototype.slice = Blob.prototype.slice || Blob.prototype[prefixes[i] + 'Slice'];
}
}
// Simple BlobBuilder fallback for basic Blob usage
if(!__support.Blob) {
// Prefixes for BlobBuilder
while ((i -= 1) > -1) {
window.BlobBuilder = window.BlobBuilder || window[prefixes[i] + 'BlobBuilder'];
}
// BlobBuilder fallback for Blob
window.Blob = function(data, obj) {
var n;
var builder = new BlobBuilder;
// Append the data
for (n in data) {
builder.append(data[n]);
}
// Return the blob
return builder.getBlob((obj && obj.type) ? obj.type : undefined);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment