self.addEventListener('message', function(e) { var data = e.data; switch (data.cmd) { case 'load': var request = new XMLHttpRequest(); // var req_url = "cgi-bin/proxy?"+encodeURI(data.url); var req_url = "cgi-bin/proxy?"+data.url; request.open("GET", req_url, true); request.responseType = "arraybuffer"; request.onload = function() { var response = ab2str(request.response); if(response == "failed") self.postMessage({'result' : 'failed', 'url' : data.url, "response" : 'Getthing content has failed.'}); else self.postMessage({'result' : 'success', 'url' : data.url, "response" : request.response}); } request.onerror = function() { self.postMessage({'result' : 'failed', 'url' : data.url, "response" : 'BufferLoader: XHR error'}); } request.send(); break; default: self.postMessage({'result' : 'failed', 'url' : data.url, "response" : 'Unknown command: ' + data.msg}); }; }, false); function ab2str(buf) { return String.fromCharCode.apply(null, new Uint8Array(buf, 0, 6)); }