support ios web worker
This commit is contained in:
parent
8e3adf34cd
commit
ae743e0465
|
@ -1,2 +1,32 @@
|
|||
// do nothing window.atob already exists
|
||||
// NOTE: iOS Web Worker and other weird environments may not have atob
|
||||
(function (w) {
|
||||
"use strict";
|
||||
|
||||
var a2b = w.atob;
|
||||
|
||||
function atob(str) {
|
||||
// normal window
|
||||
if ('function' === typeof a2b) {
|
||||
return a2b(a2b);
|
||||
}
|
||||
// browserify (web worker)
|
||||
else if ('function' === typeof Buffer) {
|
||||
return new Buffer(str, 'base64').toString('binary');
|
||||
}
|
||||
// ios web worker with base64js
|
||||
else if ('object' === typeof w.base64js) {
|
||||
// bufferToBinaryString
|
||||
// https://github.com/coolaj86/unibabel-js/blob/master/index.js#L50
|
||||
var buf = w.base64js.b64ToByteArray(str);
|
||||
|
||||
return Array.prototype.map.call(buf, function (ch) {
|
||||
return String.fromCharCode(ch);
|
||||
}).join('');
|
||||
}
|
||||
// ios web worker without base64js
|
||||
else {
|
||||
throw new Error("you're probably in an ios webworker. please include use beatgammit's base64-js");
|
||||
}
|
||||
}
|
||||
|
||||
w.atob = atob;
|
||||
}(window));
|
||||
|
|
Loading…
Reference in New Issue