5

Sto provando a utilizzare la lib di Downloads.jsm di Firefox (è nuova in Firefox 23) in un add-on jetpack.Firefox Addon Downloads.jsm

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

Ma l'esecuzione di una di queste funzioni non ha alcun effetto:

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"); 

Documentazione: 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

Avete qualche idea, come utilizzare queste funzioni? Non ho trovato alcun esempio sul web

risposta

6

Le funzioni API restituiscono un promise, non l'oggetto di download effettivo.

In breve, il seguente dovrebbe funzionare:

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(); 
}); 

Leggi su promises, e per rendere trattare con loro molto più divertente, anche Task.jsm

L'API ha cambiato un bel po 'di recente; ciò che è documentato è l'attuale Aurora-25 o successiva API. La "vecchia" API è documentata all'interno dello source.

Un esempio più completo con Firefox < supporto 25 è disponibile in questo gist.

+0

Grazie per la risposta! Ora sono più vicino alla soluzione. Ho scoperto che il parametro 'saver:" copy "' deve essere impostato. In questo caso viene chiamata la funzione success e 'd' è in realtà un oggetto' Download'. Ma 'd.start()' non ha ancora alcun effetto. – balping

+0

Il codice che ho dato funziona per me letteralmente in uno scratchpad con privilegi cromati (su OSX Nightly comunque), cioè /tmp/kaki.html viene creato con i contenuti corretti. Se vuoi più aiuto, perfeziona la tua domanda con maggiori dettagli ed elaborala un po '. – nmaier

+0

Potresti condividere il tuo esempio in [Add-on builder] (https://builder.addons.mozilla.org)? Ho copiato il tuo codice esattamente e non funziona. Sto usando Ubuntu 12.04 e davvero non so cosa c'è che non va. Sarei molto grato – balping

Problemi correlati