【问题标题】:Download url chrome extension下载 url chrome 扩展
【发布时间】:2012-12-10 18:25:26
【问题描述】:

我正在尝试通过为 chrome 扩展编写代码来下载 url。这是 myscript.js 文件:

chrome.downloads.download(
    {url: 'http://www.iana.org/_img/iana-logo-pageheader.png',
     saveAs: true
    },
    function(res){alert(res);});

这是我的 manifest.json

{
  "name": "My extension",
  "version": "1.0",
  "manifest_version":2,
  "background_page": "background.html",
  "browser_action": {
    "name": "Manipulate DOM",
    "icons": ["icon.png"],
    "default_icon": "icon.png"
  },
  "permissions": ["downloads",
    "tabs", "http://*/*","https://*/*"
  ],
  "content_scripts": [
    {
      "matches": [ "http://*/*", "https://*/*"],
      "js": ["jquery.js","d3.v2.js","myscript.js"],
      "run_at": "document_end"
    }
  ]
}

但控制台显示错误“无法调用未定义的方法'下载'”。 请帮帮我。

【问题讨论】:

    标签: google-chrome-extension


    【解决方案1】:

    chrome.downloads 的文档明确指出“API 仍在开发中。它仅适用于开发者early release channel 上的 Chrome 用户。” (重点是我的,目前在 Chrome 23)。

    要使用 API,您需要获得 Chrome 的 devcanary 版本(请参阅this page 以获取下载链接)。

    解决问题的另一种方法是不使用chrome.downloads API。我一直在使用以下方法来创建下载,它就像一个魅力(它可以在任何地方工作:内容脚本/背景页面/弹出/任何):

    var a = document.createElement('a');
    a.href = 'http://www.iana.org/_img/iana-logo-pageheader.png';
    a.download = 'iana-logo-pageheader.png'; // Filename
    a.click();                               // Trigger download
    

    a.click() 使 Chrome 跟随链接。
    download 属性使 Chrome 下载目标,并在“另存为”对话框中建议该属性的值作为文件名。

    此功能不仅限于 Chrome 扩展,您也可以在普通网页中使用。看看这个演示:http://jsfiddle.net/dEeHF/

    【讨论】:

    • 谢谢..确实有帮助..但是如果我想将文件下载到特定文件夹而不是默认下载文件夹中该怎么办。
    • @skjindal93 使用任何一种方法都是不可能的。但这不应该是一个问题:最重要的东西是可用的: 1. 文件本身。 2.文件名。将其放置在默认的“下载”文件夹还是其他位置取决于用户。
    • @RobW 很抱歉恢复旧线程,但我刚刚尝试使用您的代码,它在我第一次调用它时工作,但在我重新启动扩展之前它不会再次工作。你能想到为什么会发生这种情况吗?
    • @Garrett 我相信 Chrome 通过显示一个要求用户确认下载的信息栏来防止滥用。但是,由于背景页面是不可见的,因此似乎什么都没有发生。尝试在内容脚本中运行代码。
    • @RobW 如果是这样,为什么它会下载第一个而不下载其他?
    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2015-07-06
    相关资源
    最近更新 更多