触发点击带有'download'属性的链接

时间:2016-08-12 22:33:09

标签: javascript jquery html google-chrome

我有这样的链接:

<a class="download-link" href="/some/file.mp3" download="file.mp3">download></a>

单击此链接时,将下载文件而不提示。

我正在尝试制作一个“全部下载”按钮,但我失败了,因为它似乎无法触发点击这些链接。

例如:

$($("a[download]")[0]).trigger("click")
// this shows no error, but the file is not actually downloaded

根据2013年的this article,可以触发Chrome中下载链接的点击次数。这已被弃用了吗?有替代方法吗?

顺便说一下,我正在使用Chrome 52.理想情况下,我会在Chrome for Android上找到适用的功能。

我怀疑这是不可能的,因为如果他们愿意,网站可以下载各种恶意文件。但是,由于“全部下载”按钮是一个常见的用例,我想知道是否有一些工作方法。我不需要触发初始点击 - 用户点击“全部下载”按钮,这将触发后续点击。

要尝试自己,请转到https://maxpleaner.github.io/my_music/并在控制台中输入以下脚本:$($("a[download]")[0]).trigger("click")

2 个答案:

答案 0 :(得分:4)

我不确定jQuery是如何做到的,但以下的vanilla JavaScript成功下载了页面上的每个链接:

for (let link of document.querySelectorAll('a[download]'))
    link.click();

然后Chrome会提示我是否要下载多个文件,并且可以正常运行。

Google Chrome download multiple files prompt

虽然您可能希望在此之前警告用户,因为它会使浏览器有点迟缓。

答案 1 :(得分:-2)

你错过了CLASS中的一个点&#34; .download-link&#34;

$($(".download-link")[0]).trigger("click")