下载url chrome扩展程序

skj*_*l93 5 google-chrome-extension

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

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

这是我的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"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

但控制台显示错误"无法调用方法'下载'未定义".请帮我.

Rob*_*b W 8

该文档chrome.downloads明确指出"API仍在开发中.它仅适用于开发人员早期发布渠道中的 Chrome用户." (强调我的,目前在Chrome 23).

要使用该API,你需要获得一个开发金丝雀的Chrome版本(见本页面的下载链接).

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

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
Run Code Online (Sandbox Code Playgroud)

a.click()导致Chrome关注此链接.
download属性会导致Chrome下载目标,并在"另存为"对话框中将该属性的值建议为文件名.

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