我必须用纯文本处理那种大型数据集。我通过云端获取这些数据,并使用web worker处理和格式化这些数据。最后,我想把它下载到用户的本地存储中。因此,我使用了Blobs和saveAs()定义在 FileSaver.js 来实现跨浏览器的兼容性。我想通过URL.createObjectURL发送对最终数据的引用,并将URL的DOMString传回我的主线程。这在Chrome或Edge中工作得很好,但IE11出现了一些问题。如果我控制台.记录检索到的URL,Chrome和Edge会给我以下结果。
blob:"reference to website"/"XXXX-XXXXX-XXXXX-XXXX"
但如果我在IE11中做同样的操作,我得到的结果是:
blob:"XXXX-XXXXX-XXXXX-XXXX"
下面是一个示例代码 https:/jsfiddle.netBoesingaGitLvx20uj86。我这里没有使用web worker,因为没有web worker也存在这个问题。遗憾的是,saveAs函数在JSFiddle中不起作用,但在我的常规代码中却起作用。在Chrome浏览器中,下载url会工作,但在IE中却不行。如果你看一下控制台,你可以看到在Chrome和IE中的URL是不同的。我想这就导致了在IE中下载失败,请问有什么原因,为什么在IE中没有引用我的网站?
谢谢。
我检查了这个问题,并对此进行了一些研究。
我发现,出于安全考虑,BLOB URL在IE浏览器中无法工作。
为了解决这个问题,你可以尝试使用 msSaveOrOpenBlob()方法。
示例代码。
var str = "Hello World";
blobObject = new Blob([str], {type: "plain/text"});
$(button).click(function(){
window.navigator.msSaveOrOpenBlob(blobObject, filename);
});
引用。