IE 11:如何在没有打开/保存对话框的情况下打开JavaScript生成的文件?

时间:2015-08-13 21:47:08

标签: javascript angularjs internet-explorer pdf blob

我正在开发一个Angular应用程序,其中一个功能是打开从ReST服务返回的PDF和JSON文件。实际上,必须在没有任何打开/保存对话框的情况下执行文件打开。

这适用于谷歌浏览器,使用下面的代码和“始终打开...”:

var a = document.createElement("a");
a.href = URL.createObjectURL(blobObject);
a.download = fileName;
a.dataset['downloadurl'] = [mimeType, a.download, a.href].join(':');
a.target = "_blank";
document.body.appendChild(a);
a.click();

问题是Internet Explorer - IE11不支持像data-url这样的PDF。因此我实现了msSaveOrOpenBlob():

navigator.msSaveOrOpenBlob(blobObject, fileName);

但问题是IE总是显示打开/保存对话框,因此没有直接打开文件。这适用于使用下载文件,但不适用于msSaveOrOpenBlob()。

有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

IE提供对数据网址的有限支持,但我在最新的Chrome 12(Mac和Windows版本)中的PDF文件的数据网址数据长度上遇到了128KB的限制。 Chrome v12只是静默失败并显示空白页面。

所以唯一真正可靠的方法是在点击时显示PDF文件是将PDF保存到服务器并让用户点击服务器端链接。