对于能够用正确路径访问到的文件,我们可以动态创建一个a标签,并使用他的download属性来下载该文件,但当连续下载时,高版本的chrome却只能下载一张。
一、现象
简化操作,假设我们就是点击这个a标签,
<body> <a href="pic.png" download id="download">下载</a> <script type="text/javascript"> for (var i = 0; i < 3; ++i) { document.getElementById('download').click(); } </script> </body>
我在chrome33,59上尝试都是能下三次的。(有是否要下载多张的提示,自己电脑上的66也行。。。)
但是在59上,默认只能下载一张,没有任何提示。
二、找方法
既然不能连续下,是不是浏览器太忙不能处理了呢,先加个定时器看看,
for (var i = 0; i < 3; ++i) { setTimeout(function () { document.getElementById('download').click(); },100 * i); }
发现每个延迟0.1s是能行的,这个0.1是临时给的,最小给到了21ms,再往下给就不行了。但是21ms放到真实的环境中还是不行,这就奇怪了,难道是因为cpu处理事情太多了?
再修改,强制让浏览器卡主1s,
for (var i = 0; i < 3; ++i) { setTimeout(function () { document.getElementById('download').click(); },100 * i); } var now = +new Date(); while (1) { if (+new Date() - now > 1000) { break; } }
发现65上还是只能下载一张,也就是下载还是和cpu状态有关的,回到家66版本能正常下。。。
搜了半天还木有这方面的资料。。。
还是保守留了一秒来下载。
以下2018-5-27更新,
将浏览器升级到最新的66版本后,发现没有这个问题了。。。。
难道是chrome的问题?