原理:使用多个iframe下载文件,隐藏这个窗口。
·因为如果使用a标签的话会打开新的标签页,不友好。
·使用location.href,多个下载的时候会取消上一个文件的下载。
export const downloadFiles = (urls: Array<string>) => {
const iframes = [] as Element[]
urls.forEach((url, index) => {
const iframe = document.createElement('iframe')
iframe.style.display = 'none' // 防止影响页面
iframe.style.height = '0' // 防止影响页面
iframe.src = url
document.body.appendChild(iframe) // 这一行必须,iframe挂在到dom树上才会发请求
iframes.push(iframe)
})
// 5分钟之后删除(onload方法对于下载链接不起作用,就先抠脚一下吧)
setTimeout(() => {
iframes.forEach((iframe: Element, index) => {
iframe.remove()
})
}, 5 * 60 * 1000)
return
}