Visit Mozilla.org

Extraits de code:Observateur de téléchargement

Un article de MDC.

Cette page vient d'être traduite, mais elle a besoin d'un relecteur différent du traducteur. Pensez également à toujours vérifier le contenu avec sa toute dernière version en anglais.

Exemple d'observateur de téléchargement pour le gestionnaire de téléchargement de Firefox :


// ******************************
// DownloadObserver
// ******************************
function sampleDownload_init(){
  //**** Ajout d'un observateur de téléchargement
  var observerService = Components.classes["@mozilla.org/observer-service;1"]
                                  .getService(Components.interfaces.nsIObserverService);
  observerService.addObserver(sampleDownloadObserver, "dl-start", false);
  observerService.addObserver(sampleDownloadObserver, "dl-done", false);
  observerService.addObserver(sampleDownloadObserver, "dl-cancel", false);
  observerService.addObserver(sampleDownloadObserver, "dl-failed", false);

  window.addEventListener("unload", function() {
    observerService.removeObserver(sampleDownloadObserver, "dl-start");
    observerService.removeObserver(sampleDownloadObserver, "dl-done");
    observerService.removeObserver(sampleDownloadObserver, "dl-cancel");
    observerService.removeObserver(sampleDownloadObserver, "dl-failed");
  }, false);
}
var sampleDownloadObserver = {
  observe: function (subject, topic, state) {
    var oDownload = subject.QueryInterface(Components.interfaces.nsIDownload);
    //**** Récupération d'un objet de fichier de téléchargement
    var oFile = null;
    try{
      oFile = oDownload.targetFile;  // Postérieur à firefox 0.9+
    } catch (e){
      oFile = oDownload.target;      // Antérieur à firefox 0.8
    }
    //**** Démarrage d'un téléchargement
    if (topic == "dl-start"){
      alert('Démarrage du téléchargement de - '+oFile.path); 
    }
    //**** Annulation d'un téléchargement
    if(topic == "dl-cancel"){ 
      alert('Annulation du téléchargement de - '+oFile.path); 
    }
    //**** Téléchargement échoué
    else if(topic == "dl-failed"){ 
      alert('Echec du téléchargement de - '+oFile.path);
    }
    //**** Téléchargement réussi
    else if(topic == "dl-done"){
      alert('Téléchargement réussi de - '+oFile.path);
    }    
  }
}
window.addEventListener("load", sampleDownload_init, false);