我正试图在一个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.jsmhttps://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download
你知道如何使用这些功能吗?我还没有在网络上找到任何例子
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();
});
阅读承诺,让处理承诺变得更加有趣,还有Task.jsm
API最近确实发生了很大变化;记录的是当前的Aurora-25或更高版本的API。"旧的"API记录在源代码中。
Firefox<25在这个要点中提供了支持。