使用IE读取工作者生成的对象URL

时间:2015-03-30 19:22:24

标签: javascript internet-explorer web-worker

我有一个webworker正在生成一个用于下载的CSV,为了节省内存,我只让它返回它从teh blob生成的URL。 我的工作代码看起来像::

var blob = new Blob([ResultOfSomeWork()],{type:'text/csv'});
URL.createObjectURL(blob);
self.postMessage({url:blob.url});

我的目标是能够在firefox和chrome中下载它,这非常简单,因为我可以设置一个不可见的<a>并点击下载它。

对于IE10,我想使用msSaveBlob,但我需要一个我不想传输的blob。 如何在IE10中下载对象dataurl?

1 个答案:

答案 0 :(得分:2)

所以我找到了一个有效的解决方案。显然,我可以XHR并在我的主线程中阅读内容。

worker.onmessage = function(event){
    var url = event.data.url;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType='blob';
    xhr.onload = function(){
       msSaveBlob(xhr.response, fileName +'.csv');
    };
    xhr.send();
}

虽然这感觉非常复杂,但在实践中效果很好而且非常快。