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