Firefox Addon Downloads.jsm

bal*_*ing 5 firefox download firefox-addon download-manager firefox-addon-sdk

我正在尝试在jetpack插件中使用Firefox 的Downloads.jsm lib(它是Firefox 23中的新功能).

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

但是执行这些功能中的任何一个都没有效果:

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

文档: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

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

nma*_*ier 6

API函数返回一个promise,而不是实际的Download对象.

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

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

阅读承诺,并与他们打交道更有趣,还有Task.jsm

API最近确实发生了很大变化; 记录的是当前的Aurora-25或更高版本的API.源中记录了"旧"API .

这个要点提供了一个更完整的Firefox <25支持示例.