2015-03-30 53 views
0

我有一個webworker產生一個CSV下載,並保存內存我只有它返回它產生的URL blob .. 我的工人代碼看起來像::閱讀工人與IE瀏覽器產生的對象URL

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

我的目標是隻可以下載它在Firefox和Chrome,這是因爲我可以只設立一個無形<a>並將它被點擊下載很容易。

對於IE10我想使用msSaveBlob但我需要一個blob,我不想傳輸。 如何在IE10中下載對象數據管理?

+0

ResultOfSomeWork()產生了哪些類型的數據?如果它是一個ArrayBuffer,你可以通過'postMessage'來傳遞它,而不會被複制。 – levi 2015-03-30 20:41:12

+0

這是一個'字符串'。這只是一個很大的csv。 – 2015-03-30 22:15:23

回答

1

所以我找到了一個可行的解決方案。顯然,我可以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(); 
} 

雖然這感覺非常複雜,但它在實踐中效果很好,速度非常快。

相關問題