在IE11中使用blob url for src

时间:2015-12-07 12:40:50

标签: javascript internet-explorer

我们动态创建<iframe>(例如,对于富文本编辑器或调试窗口)并将html注入src。多年来,我们使用javascript:网址作为与this answer类似的src,直到我们遇到多个独立iframe的同源政策问题。

我们当前的解决方案是为包含html的blob创建一个对象URL:

&#13;
&#13;
var iframe = document.createElement('iframe')
  , html = '<h1>it works!</h1>'
  , blob = new Blob([html], {type: 'text/html'})
  , url = URL.createObjectURL(blob);

iframe.src = url;
document.querySelector('body').appendChild(iframe);
&#13;
&#13;
&#13;

这适用于Chrome和Firefox,但不适用于IE11(对于URLBlob未定义的浏览器,我们会回退到javascript:解决方案。 IE11引发SCRIPT5 : Access is denied

我们是否滥用了API? IE有特殊的API吗?一个已知的解决方法?

2 个答案:

答案 0 :(得分:3)

不幸的是IE does not support DATA URI's *有一些警告。我有同样的问题,但嵌入式标签中有PDF。

看起来您可以使用msSaveOrOpenblob让IE打开您的blob文件

答案 1 :(得分:0)

IE 11不支持所有的数据URI。

它仅支持图像和链接资源,例如CSS或JS。请注意,不支持HTML文件。