文件下载的ie11兼容性优化

简介:   在 http://www.cnblogs.com/sunshine6/p/8296945.html 中有说关于前后端分离时如何实现文件下载的功能,但是过完年回来,同事告诉我这个方式在ie11上存在不兼容的问题,报如下错:  浏览器兼容问题是很头疼的问题,因为之前也没遇到过这样的问题,所以经过两三个小时才解决。

  在 http://www.cnblogs.com/sunshine6/p/8296945.html 中有说关于前后端分离时如何实现文件下载的功能,但是过完年回来,同事告诉我这个方式在ie11上存在不兼容的问题,报如下错:

  浏览器兼容问题是很头疼的问题,因为之前也没遇到过这样的问题,所以经过两三个小时才解决。

  发现在微软在ie10 和ie11中有两个特有的方法:window.navigator.msSaveBlobwindow.navigator.msSaveOrOpenBlob 方法,这两个方法的区别在于,前者只有保存,后者有保存和打开两个选项,按个人喜好使用就行。

  优化之后的代码如下:

 1  /**
 2      * 导出用户列表
 3      */
 4     private exportUsers(){
 5         this.http.doPost({
 6             url: 'system/sysmanager/user/exportUsers',
 7             responseType:ResponseContentType.Blob,
 8             body:this.form,
 9             success: (req, res) => {
10                 if(window.navigator.msSaveOrOpenBlob){
11                     // 兼容ie11
12                     try{
13                         var blobObject = new Blob([res.json()]); 
14                         window.navigator.msSaveOrOpenBlob(blobObject, "用户列表.xlsx"); 
15                     }
16                     catch(e){
17                         console.log(e);
18                     }
19                 }
20                 else{
21                     var blob = new Blob([res.json()]); 
22                     var a = document.createElement('a');
23                     a.href = URL.createObjectURL(blob); // xhr.response is a blob
24                     a.download = "用户列表.xlsx";
25                     a.style.display = 'none';
26                     document.body.appendChild(a);
27                     a.click();
28                     a.remove();
29                 }
30             }
31         });
32    }

 

  如果有什么不当之处,请大家多多指出。

 

目录
相关文章
找回 文件下载 ie 窗口
引用:http://tech.sina.com.cn/c/2004-06-23/1405379225.shtml 笔者是一个网虫,常常在网上挂着,总喜欢下载、试用一些最新推出的软件,IE的下载功能也一直能正常使用。
756 0
|
6月前
|
Web App开发 前端开发 JavaScript
|
28天前
|
存储 机器人
在阿里云RPA中,你可以通过以下步骤来更改默认唤醒IE浏览器的地址
【2月更文挑战第28天】在阿里云RPA中,你可以通过以下步骤来更改默认唤醒IE浏览器的地址
17 1
|
7月前
|
Web App开发 XML 编解码
IE浏览器下载文件中文文件名乱码问题解决
IE浏览器下载文件中文文件名乱码问题解决
81 0
|
4月前
|
Web App开发 JavaScript 前端开发
JavaScript在IE和标准浏览器下的兼容性处理
JavaScript在IE和标准浏览器下的兼容性处理
39 0
|
5月前
|
前端开发
border-radius 兼容 IE8浏览器
border-radius 兼容 IE8浏览器
39 1
|
5月前
|
Web App开发 移动开发 安全
IE浏览器,和Edge浏览器
IE浏览器,和Edge浏览器
|
5月前
|
JavaScript
兼容IE浏览器
兼容IE浏览器
30 0
|
7月前
|
JSON JavaScript 前端开发
基于FlashWavRecorder实现IE11浏览器录音后用科大讯飞转文字
基于FlashWavRecorder实现IE11浏览器录音后用科大讯飞转文字
58 0
|
7月前
|
编解码 网络协议 开发工具
IE浏览器下如何低延迟播放RTSP或RTMP流
首先,虽然本文是介绍IE浏览器下OCX控件播放RTSP或RTMP,但这种方式并不推荐,毕竟它只能用于IE浏览器环境下,局限太大,而且随着微软IE浏览器的更新,不确定后续支持情况。当然,话说回来,如果是在特定的使用场景下,只需要某些版本IE浏览器支持,但对延迟和稳定性要求非常高,OCX控件方式也不失为一个好的选择。