不能一键下载2个文件(不同的url)

Posted

技术标签:

【中文标题】不能一键下载2个文件(不同的url)【英文标题】:Can't download 2 files by one click (different urls) 【发布时间】:2019-09-13 22:20:43 【问题描述】:

我有按钮和两个复选框。如果选中了两个复选框,我必须调用 2 个不同的 url 来下载文件。一个 url 调用良好,但第二个被浏览器阻止。

window.open('http://example.com/getFirstFile', '_blank');
window.open('http://example.com/getSecondFile', '_blank');

我也试过

window.location = 'http://example.com/getFirstFile';
window.location = 'http://example.com/getSecondFile';

和延迟

window.location = 'http://example.com/getFirstFile';

setTimeout(function() 
   window.location = 'http://example.com/getSecondFile';
, 1000);

没有什么是行不通的。

如何调用两个链接进行文件下载?

【问题讨论】:

“但被浏览器第二次阻止”。你遇到了什么错误? 【参考方案1】:

浏览器中的某些操作需要先启动用户操作。例如,如果您使用了媒体控件,则除非首先实例化单击处理程序,否则您无法操作播放请求。

打开窗口很可能也是这些事件之一,因此除非用户再次单击,否则 window.open 会被阻止。

你甚至可以从控制台看到这种情况,试试 -> window.open('http://www.microsoft.com', '_blank');window.open('http://www.google.co.uk', '_blank'); 你会注意到只有微软的网站会打开。

但如果您将它们作为两个单独的控制台请求执行,它们都会打开。

这样做的明显原因是阻止恶意网站向您的浏览器发送垃圾邮件。

这里阻止的是弹出窗口阻止程序,因此可以选择覆盖它。但同样是用户必须允许这种情况发生。因此,在 Chrome 中,您应该会看到一个弹出窗口拦截器图标,您应该能够选择始终允许,然后您将能够打开多个窗口而无需其他用户交互。

【讨论】:

以上是关于不能一键下载2个文件(不同的url)的主要内容,如果未能解决你的问题,请参考以下文章

为啥我下载的系统镜像文件在U盘模式下不能安装?

苹果越狱后能不能直接root

小白一键重装系统下载文件怎么这么慢

弹出文件下载窗口时如何提取文件下载的URL?

自用chrome+油猴脚本,使用迅雷下载百度云大文件,一键离线下载

来自 URL 的文件大小与存储中的下载文件不同