我正在尝试创建一次下载多个文件的扩展程序。
为了实现这一点,我使用chrome downloads api,这里是代码(使用AngularJS):
var fileDownloadProperties = function(raw) {
return {
url: "https:" + raw.url,
filename: sharedDir + "/" + raw.name + "pdf",
saveAs: false
}
};
$scope.status = "";
filesToDownload.forEach(function (raw) {
chrome.downloads.download(fileDownloadProperties(raw));
});
问题是当脚本运行时忽略 saveAs 选项,然后继续打开另存为对话框(名称和位置正确传递,因为它们是对话框中的默认值,但可能会被覆盖。)
虽然它确实允许我下载,但它不是很有用,因为我可以拥有数十个文件(并且只有当前一个文件下载完成后,下一个保存对话框才会打开!)。
有没有办法强制Chrome以静默方式同时下载文件?我尝试了其他解决方案(如下面的代码),但似乎都没有避免打开对话框。
var a = document.createElement("a");
a.href = files[0];
a.download = files[0];
a.click();
非常感谢任何帮助,谢谢。
答案 0 :(得分:3)
您可以指示用户将Chrome设置设置为
Ask where to save each file before downloading
"另存为"打开/关闭。
https://lifehacker.com/make-chrome-ask-where-to-save-downloaded-files-by-chang-1790840372
答案 1 :(得分:1)
Jenna提供的答案是可以接受的解决方法,但是,强迫用户更改其首选项并不是我接受的“可接受的解决方案”。在this thread上有一个针对此bug的问题。
我猜想正确修复的唯一可能方法是让chrome团队站起来为我们的开发人员修复此问题。我建议通过添加注释来指示对线程施加更大的压力,该注释指示为什么需要修复此问题以及其紧急程度。同样也是最重要的一点,请确保点击星标以将问题加注星标,因为他们会对此予以更多关注。