【发布时间】:2016-08-12 22:33:09
【问题描述】:
我有一些这样的链接:
<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。理想情况下,我会找到适用于 Android 版 Chrome 的东西。
我怀疑这是不可能的,因为网站可以根据需要下载各种恶意文件。但是,由于“全部下载”按钮是一个常见的用例,我想知道是否有一些可行的方法。我不需要触发初始点击 - 用户将点击“全部下载”按钮,这将触发后续点击。
要亲自尝试,请转到 https://maxpleaner.github.io/my_music/ 并在控制台中键入以下脚本:$($("a[download]")[0]).trigger("click")
【问题讨论】:
-
如果不起作用,您可以考虑使用 window.open 并确保服务器正在发送文件的 mime 类型以强制下载。
-
@j_mcnally 我正在使用静态服务器 - github 页面。不确定在这种情况下如何设置 mime 类型。使用 rawgit 我为我的一个 mp3 获得了 this url,但它会播放这首歌而不是下载它。
-
实际上您的代码因以下错误而失败:Cannot read property 'trigger' of null(...);你的后端是用php写的?
-
好吧,我的错。我看到您使用的是 3.x。我尝试将 ID 添加到元素,然后使用 vanilla js 触发点击。如果您可以使用循环编辑 DOM,为每个“可下载”链接添加增量 id,那么您可以循环所有链接并触发 .click()
-
@Caius 谢谢 - rvighne 的回答中也建议使用香草 js。
标签: javascript jquery html google-chrome