javascript - 如何强制 Chrome 在下载 URL 时不打开另存为对话框?

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

Chrome Build:最新,33+

Chrome 扩展程序从当前查看的网站中提取某些 url,然后下载其中的一个子集(通常是数百个文件)。

预期行为:

文件被下载到默认的下载文件夹中,不会询问必须将文件保存在何处以及以什么文件名保存。

问题:

如果用户在 Chrome->设置->高级设置->下载中启用了“下载前询问每个文件的保存位置”选项,那么当尝试同时下载 100 个文件时,Chrome 会尝试打开 100 个SaveAs 对话框和崩溃。

我尝试了什么:

  • 使用带有选项的 chrome.downloads.download(object options, function callback) 方法 saveAs: false
  • 使用以下代码通过模拟的 mousevent 触发下载:

    function saveAs(Url,filename){
      var blob=new Blob([''], {type:'application/octet-stream'}); 
      var url = webkitURL.createObjectURL(blob);
      var a = document.createElementNS('http://www.w3.org/1999/xhtml','a');
      a.href = Url;
      a.download = filename; 
      var e = document.createEvent('MouseEvents');
      e.initMouseEvent('click', false, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
      a.dispatchEvent(e);
      webkitURL.revokeObjectURL(url);
    }
    

最佳答案

启用“下载前询问每个文件的保存位置”时是不可能的(自 70.0.3538.77 起)。相应的 Chromium 错误是:

Bug 417112: chrome.downloads.download ignore saveAs

此外,在 chrome.downloads.downloads() 中设置文件名也不起作用。

Bug 758094: Extension can not rename downloaded file

关于javascript - 如何强制 Chrome 在下载 URL 时不打开另存为对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20925222/

相关文章:

javascript - 按钮上的脉轮 UI colorScheme Prop

google-chrome - 如何在谷歌浏览器上修改 SETTINGS_MAX_CONCURRENT_STREAMS?

javascript - 让谷歌浏览器扩展自动弹出

python - 使用带有扩展名(.crx 文件)的 Python 运行 Selenium WebDriver

javascript - 获取伪元素:before/:after working in IE 7

javascript - 如何使用 window.print 在我的结果中打印单行

javascript - 如何使用 JSON API?

html - 一行中的 Span 元素不会在 Chrome 浏览器中的 Bootstrap 容器中换行

python - CherryPy无法显示图像

javascript - 尝试构建查询字符串并抓取 Google 结果