在IE11的Web Worker中使用URL.createObjectURL。

问题描述 投票:0回答:1

我必须用纯文本处理那种大型数据集。我通过云端获取这些数据,并使用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中没有引用我的网站?

谢谢。

web blob internet-explorer-11 worker createobjecturl
1个回答
0
投票

我检查了这个问题,并对此进行了一些研究。

我发现,出于安全考虑,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. 在internet explorer中使用Angularjs的Blob url。

© www.soinside.com 2019 - 2024. All rights reserved.