chrome.downloads.download忽略saveAs选项并打开对话框

时间:2016-12-30 17:13:52

标签: javascript angularjs google-chrome google-chrome-extension download

我正在尝试创建一次下载多个文件的扩展程序。

为了实现这一点,我使用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();  

非常感谢任何帮助,谢谢。

2 个答案:

答案 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团队站起来为我们的开发人员修复此问题。我建议通过添加注释来指示对线程施加更大的压力,该注释指示为什么需要修复此问题以及其紧急程度。同样也是最重要的一点,请确保点击星标以将问题加注星标,因为他们会对此予以更多关注。

enter image description here