IE8无法下载文件问题解决

  • 正常js下载文件方法
if (window.navigator.msSaveOrOpenBlob) {
    // 兼容IE10
    navigator.msSaveBlob(blob, downName)
} else {
    // chrome/firefox
    let aTag = document.createElement('a')
    aTag.download = downName
    aTag.href = URL.createObjectURL(blob)
    aTag.click()
    URL.revokeObjectURL(aTag.href)
}
  • ie8没有navigator.msSaveBlob,也没有Blob对象,创建a标签下载也会报错error: 拒绝访问,简直离谱,即使根据我上一篇拒绝访问的方法(IE8发送ajax方法解决)去弄,也是没有任何反应

网上的方法

  • 使用window.open或者iframe,用这个方法,在我电脑上点击,IE直接黑屏无响应了。。
var DownLoad = function (url, name) {
      if (!!window.ActiveXObject || "ActiveXObject" in window) {
        //ie
        var oPow = window.open(url, "", "width = 1, height = 1, top = 5000, left = 5000 ");
        var isOpen = true; //判断window.open是否被禁用
        try {
          if (oPow == null) {
            isOpen = false
          }
        } catch (err) {
          isOpen = false
        }
        if (isOpen) {
          //没禁用window.open采用window.open下载
          while (oPow.document.readyState !== "complete") {
            if (oPow.document.readyState === "complete") break;
          }
          oPow.document.execCommand("SaveAs", true, name);
          oPow.close();
        } else {
          //禁用了window.open采用iframe下载
          var oIrame = document.createElement('iframe');
          oIrame.style.width = "0px";
          oIrame.style.height = "0px";
          oIrame.style.opacity = 1;
          document.body.appendChild(oIrame)
          oIrame.src = url;
          var IfDoc = oIrame.contentDocument || oIrame.document;
          oIrame.onreadystatechange = function () { // IE下的节点都有onreadystatechange这个事件  
            if (oIrame.readyState == "complete") {
              // oIrame.execCommand("SaveAs", true, name)
              document.body.removeChild(oIrame)
            }
          };

        }

      } else {
        if (typeof url == 'object' && url instanceof Blob) {
          url = URL.createObjectURL(url); // 创建blob地址
        }
        var aLink = document.createElement('a');
        aLink.href = url;
        aLink.download = name || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
        var event;
        if (window.MouseEvent) {
          event = new MouseEvent('click');
        } else {
          if (document.createEvent) {
            event = document.createEvent('MouseEvents');
            event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
          }
        }
        aLink.dispatchEvent(event);
      }

    }
  • 还有一种方法是我想的,也不行,也是请求的后台数据流,但是请求报错500,后台说请求到后台就断开握手了,不知道是IE的问题还是啥。。
$.ajax({
	url,
	method: "get",
	dataType: "json",
	responseType: "blob"
});

解决方法

  • 使用form表单提交,中间的input是传参,会放在FormData里面
 $(
    "<form action='"+src + "' method='get'>" +
    	"<input type='text' name='city' value='" + CITY + "'/>" +
    "</form>"
).appendTo("body").submit().remove();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IE浏览器无法下载文件的原因可能是因为用户启用了IE浏览器的最高安全级别,禁用了文件下载功能。解决这个问题的方法如下: 1. 打开IE浏览器,点击上方的“工具”菜单,选择“Internet选项”。 2. 在“Internet选项”中切换到“安全”选项卡,点击第一个图标“Internet”。 3. 在弹出的“安全设置”下方找到“文件下载”,将其设置为“启用”,并将下面的“文件下载自动提示”设置为“禁用”,将最下方的“重置自定义级别”设置为“安全级-中”,点击“确定”退出。 另外,如果还存在问题,可以尝试在“Internet选项”中切换到“安全”选项卡,点击第一个图标“Internet”,直接点击“默认级别”后,确定退出即可。 另外,IE浏览器不支持HTTP状态码为201,如果在代码中使用了HTTP状态码为201,可以将其改为HTTP状态码为200即可解决下载问题。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [IE当前安全设置不允许下载文件解决办法](https://blog.csdn.net/xitongzhijianet/article/details/127495787)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [解决IE文件无法正常下载,其他浏览器可以正常下载](https://blog.csdn.net/weixin_42117948/article/details/80302182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值