加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

[笔记]chrome65使用download属性连续下载文件失效的问题

发布时间:2020-12-15 01:18:36 所属栏目:C语言 来源:网络整理
导读:对于能够用正确路径访问到的文件,我们可以动态创建一个a标签,并使用他的download属性来下载该文件,但当连续下载时,高版本的chrome却只能下载一张。 一、现象 简化操作,假设我们就是点击这个a标签, body a href="pic.png" download id="download"下载/a

对于能够用正确路径访问到的文件,我们可以动态创建一个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的问题?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读