我正在尝试通过编写chrome扩展程序的代码来下载网址。这是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"
}
]
}
但是控制台显示错误“无法调用方法'下载'未定义”。 请帮帮我。
答案 0 :(得分:8)
chrome.downloads
的文档明确指出“API仍在开发中。仅适用于开发人员early release channel 上的Chrome用户。” (强调我的,目前在Chrome 23)。
要使用该API,您需要获得Chrome的 dev 或 canary 版本(有关下载链接,请参阅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/。