我有一个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?
答案 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();
}
虽然这感觉非常复杂,但在实践中效果很好而且非常快。