Firefox Addon Downloads.jsm

时间:2013-08-12 19:49:47

标签: firefox download firefox-addon firefox-addon-sdk download-manager

我正在尝试在jetpack插件中使用Firefox的Downloads.jsm库(在Firefox 23中是新的)。

var {Cu} = require("chrome"); //works fine
const {Downloads} = Cu.import("resource://gre/modules/Downloads.jsm"); //works fine

但执行这些功能之一无效:

download = Downloads.createDownload({source: "http://cdn.sstatic.net", target: "/tmp/kaki.html"}); //download is an object but has no function "start"
Downloads.simpleDownload("http://cdn.sstatic.net","/tmp/kaki.html");

文档: https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download

您有什么想法,如何使用这些功能?我没有在网上找到任何例子

1 个答案:

答案 0 :(得分:6)

API函数返回promise,而不是实际的下载对象。

简而言之,以下内容应该有效:

const {Downloads} = Cu.import("resource://gre/modules/Downloads.jsm", {});
var downloadPromise = Downloads.createDownload({source: "http://cdn.sstatic.net", target: "/tmp/kaki.html"})
downloadPromise.then(function success(d) {
  d.start();
});

阅读promises,并让他们更有趣,Task.jsm

API最近确实发生了很大变化;记录的是当前的Aurora-25或更高版本的API。 “旧”API记录在source

gist中提供了一个更完整的Firefox< 25支持示例。