chrome65使用download属性连续下载文件失效的问题
对于能够用正确路径访问到的文件,我们可以动态创建一个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的问题?