diff --git a/Blob.js b/Blob.js index c740cd8..7807064 100644 --- a/Blob.js +++ b/Blob.js @@ -1,6 +1,6 @@ /* Blob.js * A Blob implementation. - * 2014-07-01 + * 2014-07-24 * * By Eli Grey, http://eligrey.com * By Devin Samarin, https://github.com/eboyjr @@ -62,13 +62,31 @@ , ArrayBuffer = view.ArrayBuffer , Uint8Array = view.Uint8Array + + , origin = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/ ; FakeBlob.fake = FB_proto.fake = true; while (file_ex_code--) { FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1; } + // Polyfill URL if (!real_URL.createObjectURL) { - URL = view.URL = {}; + URL = view.URL = function(uri) { + var + uri_info = document.createElementNS("http://www.w3.org/1999/xhtml", "a") + , uri_origin + ; + uri_info.href = uri; + if (!("origin" in uri_info)) { + if (uri_info.protocol.toLowerCase() === "data:") { + uri_info.origin = null; + } else { + uri_origin = uri.match(origin); + uri_info.origin = uri_origin && uri_origin[1]; + } + } + return uri_info; + }; } URL.createObjectURL = function(blob) { var