在探索中前行,在失败中成长

正文

兼容IE 8的文件下载方法

落雪无痕Web前端2

IE 8 中下载图片文本等文件会直接在网页打开,现需要使其弹出“另存为”而不是直接在网页打开。

直接上方法:

var downloadFile = 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
    }
    // //没禁用window.open采用window.open下载
    // while (oPow.document.readyState !== "complete") {
    //   if (oPow.document.readyState === "complete") break;
    // }
    // oPow.document.execCommand("SaveAs", true, name);
    // oPow.close();
    if (!isOpen) {
      //禁用了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);
  }

}

本方法转自https://www.cnblogs.com/justnotwo/p/10613951.html,非常感谢这位同学!

本文链接:https://www.toside.cn/skill/10

技术文章>兼容IE 8的文件下载方法

评论

  • cc2-1
    Chrome 81.0.4044.138 - Mac OS 10.15.4

    test

  • 啊宝1-1
    Chrome 78.0.3904.108 - Windows 10

    学习了