Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何下载一组使用javascript元素的文件?_Javascript_Html - Fatal编程技术网

如何下载一组使用javascript元素的文件?

如何下载一组使用javascript元素的文件?,javascript,html,Javascript,Html,考虑以下代码: 我在页面上有一个按钮,当我点击它时,它会下载图片 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=ed

考虑以下代码:

我在页面上有一个按钮,当我点击它时,它会下载图片

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Test Download</title>
</head>

<body>
    <button onclick="handleDownload()">download</button>

    <script> 
        // Assume these urls are valid and can been downloaded in the 
           same domain
        var urls = ['url1', 'url2', 'url3'];

        function handleDownload() {
            for (var url of urls) {
                var a = document.createElement('a');
                a.setAttribute('href', url);
                a.setAttribute('download', '-');
                a.click();
            }
        }
    </script>
</body>

</html>

测试下载
下载
//假设这些URL是有效的,并且可以在
同一领域
变量URL=['url1','url2','url3'];
函数handleDownload(){
for(url的变量url){
var a=document.createElement('a');
a、 setAttribute('href',url);
a、 setAttribute('download','-');
a、 单击();
}
}

问题是当我点击下载按钮时,它会发送所有请求,但只下载一张图片,所以我不知道问题出在哪里

a.click()
执行太快还是其他原因?

var链接=[
'https://s3.amazonaws.com/Minecraft.Download/launcher/Minecraft.exe',
'https://s3.amazonaws.com/Minecraft.Download/launcher/Minecraft.dmg',
'https://s3.amazonaws.com/Minecraft.Download/launcher/Minecraft.jar'
];
函数handleDownload(URL){
var link=document.createElement('a');
link.setAttribute('download',null);
link.style.display='none';
document.body.appendChild(链接);
对于(var i=0;i

测试我如上所述,我想下载一些带有URL的图片。但它失败了,因为在上一个请求未连接到服务器之前,它无法发送请求。所以我评论说,如果我点击这些链接太快,它也会下载最后一个


最后,我使用
window.open(url)
来完成它,而不是使用顶部显示的方式

不,它下载所有文件。至少在osx上的chrome上-下载弹出窗口只会弹出一次,可能是重复的,但当我单击“测试我”按钮时,这个演示只会下载阵列中的最后一个文件,它不是三个,在这种情况下,你可以使用zip.js(),也可以参考这里()我已经测试过,如果我在页面上列出三个链接,如果我一个接一个地快速单击这些链接,它也只会下载最后一个文件。如果我像下面那样执行
link.click()
,它会像预期的那样工作``函数startDownload(url){for(let I=0;I{let element=document.getElementById('link'+I);element.click()},2000*(i+1));}```