5

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

これらの機能を使用する方法について何か考えはありますか? ウェブ上で例が見つかりませんでした

4

1 に答える 1

6

API 関数は、実際の Download オブジェクトではなく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();
});

promise を読み、それらをより楽しく扱うために、Task.jsmも使用します。

API は最近かなり変更されました。文書化されているのは、現在の Aurora-25 以降の API です。「古い」API はソース内に文書化されています。

25 未満の Firefox をサポートするより完全な例は、このgistにあります。

于 2013-08-12T20:14:17.183 に答える