关于 js循环批量下载文件,使用window.location.href下载,并不能全部下载

关于如题

场景需要下载软件的时候,将关联的附件按顺序下载下来。刚开始全部用
window.location.href = “api/downloadSoftware?id=” + id;
直接url的方式只能下载最后一个文件。其他的文件全部没有下载下来。
搜索了一下先发现一个方案:

 var divFrame = window.parent.document.getElementById(docId)
                      //判断是否存在,如果存在先移除,再重新创建
                      if (divFrame != null) {
                          window.parent.document.body.removeChild(divFrame)
                      }
                      //重新创建
                      var iframe = window.parent.document.createElement("iframe");
                      iframe.setAttribute("id", docId);
                      window.parent.document.body.appendChild(iframe);
                      divFrame = window.parent.document.getElementById(docId);
                      divFrame.src = "api/downloadDoc?id=" + docId;
                      divFrame.style.display = "none";
for (var j = 0; j < arr.length; j++) {
                var docId=arr[j];
                //在dom树上创建一个a标签
                var a = document.createElement('a');
                var url = "api/downloadDoc?id=" + docId
                //将url赋值给a标签的href属性
                a.href = url;
                //设置设置下载文件的名称 (这里如果你接口里面输出设置了文件名称,这里设置文件名称将不生效,不设置可能又会触发下载失败)
                a.download = docId+'.txt';
                a.click();//主动触发a标签点击事件
            }
            $scope.downloading = true;
            window.location.href = "api/downloadSoftware?id=" + id;

版权声明:本文为w12515114096原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。