IE不支持console.log及文件流下载方法

在IE浏览器情况下 出现了这样一个bug

在其他浏览器下页面无问题

使用IE浏览器打开网页 可以进行正常的功能操作 但是当F12打开开发者工具后关闭此工具 就会出现功能无法使用的问题

一打开开发者工具功能又可以正常使用

使用的是ie11 正常来说已经算是版本比较高的IE了

经过尝试 发现原因是因为代码中有console.log导致

原理:IE没有方法console.log

解决方法:注释即可

 

当需要做一个下载文件的功能 且后端传来的是以文件流的形式时

IE浏览器不支持常规的创建a标签的方法

此时需要使用IE自带的方法来执行:

            // responseType接收形式必须为blob 接收文件流后执行如下代码
            let headers = res.headers;
            let fileName = "接收文件的名字.文件格式"
            let blob = new Blob([res.data], {type:headers['content-type']})
            let url = URL.createObjectURL(blob);
            if('download' in document.createElement('a')) {     //如果浏览器a标签支持此功能
                let link = document.createElement('a');         //建立一个a标签
                document.body.appendChild(link);                //将此标签加入到html中
                link.style.display = "none";                    
                link.href = url;                                //a标签添加url
                link.download = fileName;
                link.click();                                   //执行click
                URL.revokeObjectURL(link.href)  //消除url;
                document.body.removeChild(link);    //释放标签
            } else {
                navigator.msSaveBlob(blob,fileName)     //IE浏览器下载文件 (不含打开)
                navigator.msSaveOrOpenBlob(blob,fileName)       //IE浏览器下载文件(含打开)
            }

 

 

 

资料:https://www.cnblogs.com/feng18/p/9232258.html

文件流代码太久远了 已经不记得从哪看到的了 有需要的童鞋可自行百度

 

posted @ 2021-12-13 14:33  名字不得为空  阅读(309)  评论(0编辑  收藏  举报