- 100
- 0
动态添加a标签,设置download属性下载,在chorme(我试的是33和59)下有用,但在65版本下有用,
简化代码,如下:
<body>
<a href="1.txt" download id="down">123</a>
</body>
<script>
for (var i = 0; i < 3; ++i) {
// setTimeout(function () {
document.getElementById('down').click();
// }, 100 * i);
}
</script>
此段代码在65下,只下载一个,在33和59下会提示是否允许下载多个的提示。
打开注释,65下也能正常下载3个,但没有允许下载多个的提示。
经测试,延时的大小和下载文件的大小无关
似乎与cpu有关,
在for循环之后,以下代码,65上也只能下载一个了。
var now = +new Date();
while(1) {
if (+new Date() - now >= 1000) {
break;
}
}
想问下,这是什么原因,或者有没有更好的处理方式?
- 共 0 条
- 全部回答
-
シ_俄给の迩yi靠ジ 普通会员 1楼
在高版本的Chrome浏览器中,使用
download属性进行连续下载时可能会遇到只能下载一张(或一个文件)的问题。这是因为Chrome为了防止恶意连续下载以及保护用户体验,默认限制了通过JavaScript触发的下载行为,同一时间内只会处理一个download属性触发的下载请求。如果你需要让用户连续下载多个文件,可以考虑以下两种解决办法:
-
用户交互触发下载:将每个下载链接展示给用户,由用户手动点击下载。这样每次下载都是用户主动触发,不受Chrome的自动下载限制。
-
延时触发下载:对于编程触发下载的情况,可以为每个下载操作添加适当的延时,模拟用户点击下载之间的间隔,例如:
javascript let urls = ['file1.pdf', 'file2.pdf', 'file3.pdf']; for (let url of urls) { setTimeout(() => { let a = document.createElement('a'); a.href = url; a.download = ''; a.click(); }, 100); // 延迟100毫秒以模拟用户行为,具体延迟时间可以根据实际需求调整 }需要注意的是,这种方法并不保证在所有情况下都能成功连续下载,因为不同浏览器可能有不同的策略来处理这种情况。如果需要更稳定的批量下载功能,建议在服务器端实现或者提供ZIP压缩包下载等替代方案。
-
-
雷袭月启 普通会员 2楼
在高版本的Chrome浏览器中,如果使用HTML5的download属性进行连续下载,可能会遇到只能下载一个文件的问题。这是因为Chrome为了防止恶意或意外的连续下载行为,对同一标签页下的多个下载请求进行了限制。
解决这个问题的方法有以下几种:
-
分别打开新的标签页进行下载:对于需要连续下载的文件,可以创建新的标签页或者窗口进行下载,每个链接在一个新的标签页中打开并自动下载。
-
使用JavaScript控制下载:通过编程的方式动态创建a标签,并触发点击事件来进行下载,每次下载后移除该a标签,再创建下一个下载链接。
例如:
javascript var downloadLinks = ['file1.pdf', 'file2.pdf', 'file3.pdf']; for (var i = 0; i < downloadLinks.length; i++) { var a = document.createElement('a'); a.href = downloadLinks[i]; a.download = ''; document.body.appendChild(a); a.click(); a.remove(); }3. 用户手动点击下载:如果是在用户交互场景下,可以让用户手动点击每个下载链接进行下载。- 如果是Web应用,还可以考虑将多个文件打包成一个压缩包提供给用户一次性下载。
请注意,不同的浏览器可能对download属性的支持程度和行为有所不同,开发时需要做好兼容性处理。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部



