在IE11的Web Worker中使用URL.createObjectURL



我必须用纯文本处理大型数据集。我通过云将这些数据分成几个块,并使用网络工作者来处理和格式化数据。最后,我想把它下载到用户的本地存储中。因此,我使用FileSaver.js中定义的Blob和saveAs((来授予跨浏览器兼容性。我想通过URL.createObjectURL发送对最终数据的引用,并将URL的DOMString传递回我的主线程。这在Chrome或Edge中运行得很好,但IE11会带来一些问题。如果我console.log检索到的URL,Chrome和Edge会给我以下结果:

blob:"reference to website"/"XXXX-XXXXX-XXXXX-XXXX"

但如果我在IE11中也这样做,我会得到以下结果:

blob:"XXXX-XXXXX-XXXXX-XXXX"

下面是一个示例代码:https://jsfiddle.net/BoesingaGit/Lvx20uj8/6/我在这里不使用网络工作者,因为没有它问题也存在。遗憾的是,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);
});

参考文献:

  1. 在IE11 中打开createObjectURL创建的链接

  2. 在互联网浏览器中使用angularjs 的Blob url

最新更新