Envoyé par : demoni
Date : 01/07/2008 16:38
Bonjour,
J'aimerais initialiser du code au démarrage de firefox d'une manière propre. Si j'ai bien compris, on peut récupérer des notifications tout au long de l'avancement du démarrage de firefox en utilisant le service Observer.
Voici le code que j'ai mis en place et qui ne fonctionne pas :
function initBrowser(){ var observerService = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); observerService.addObserver(initBrowserObserver, "final-ui-startup", false); window.addEventListener("unload", function() { observerService.removeObserver(initBrowserObserver, "final-ui-startup"); }, false); }
var initBrowserObserver = { observe: function (subject, topic, state) { if (topic == "final-ui-startup"){ alert('blah'); } } }
window.addEventListener("load", initBrowser, false);
Si quelqu'un peut m'aider, merci d'avance.
Envoyé par : Paul Rouget
Date : 02/07/2008 10:31
Qu'est ce qui ne fonctionne pas ? Y'a un message d'erreur ?
Envoyé par : demoni
Date : 02/07/2008 10:35
Non, pas de message d'erreur. Il semble que l'observer soit bien ajouté mais qu'il ne réagisse pas à la notification "final-ui-startup".
Envoyé par : demoni
Date : 02/07/2008 10:38
En fait, l'alert "Blah" ne se déclenche pas.
Envoyé par : Paul Rouget
Date : 02/07/2008 13:47
ha bah oui, c'est normal :)
Tu fais ça dans une window mais cet évennement est envoyé avant la création des fenêtres.
Envoyé par : demoni
Date : 02/07/2008 14:18
Ah merci! Mais alors je devrais faire ça dans quoi?
Envoyé par : demoni
Date : 02/07/2008 14:28
J'utilise peut-être la mauvaise technique. Ce que je souhaite, c'est pouvoir initialiser une interface dynamique au lancement du browser. Si je la lance directement dans un script, j'obtiens des erreurs car l'interface de firefox n'est pas encore complètement initialisée. Pour l'instant, j'utilise un setTimeout mais je n'aime pas du tout cette méthode, je préfère trouver un moyen propre pour lancer l'initialisation de mon interface dès que celle de firefox est complètement initialisée.
Envoyé par : Paul Rouget
Date : 02/07/2008 15:57
et l'event load sur un overlay ?
Envoyé par : demoni
Date : 02/07/2008 16:23
Je crois que j'avais mal posé le problème et très mal posé ma question.
En fait, j'ai un overlay ajoutant des éléments à l'interface. Prenons l'exemple d'une liste déroulante que j'ajoute à la barre personnelle. Je souhaite initialiser le contenu de cette liste déroulante une bonne fois pour toute et si je le fais dans un script JS placé dans l'overlay, cela ne fonctionne pas car la liste n'est pas encore initialisée. Si j'utilise un setTimeout, cela fonctionne.
Mais comme mentionné avant, je n'aime pas les setTimeout, je trouve que c'est sale. Mais je n'ai peut-être pas le choix.
J'ai ajouté l'initialisation de la liste dans un event load de l'overlay et cela ne fonctionne pas non plus.
En tous cas, je te remercie vraiment de ton aide.
Envoyé par : frindsssss
Date : 14/07/2008 01:20
final-ui-startup est censé être à true quand c'est chargé?
Envoyé par : laurentj
Date : 16/07/2008 12:11
Salut,
il faut enregistrer ton observer au démarrage de Firefox. Il faut donc faire un composant xpcom qui au demarrage, s'enregistrera auprés du category manager dans la category app-startup. Et lors du app-startup, tu pourras enregistrer ton observer.
Envoyé par : laurentj
Date : 16/07/2008 13:40
Je viens d'écrire une petite doc à propos de ce app-startup.
Envoyé par : demoni
Date : 16/07/2008 13:43
Ahh magnifique! Merci beaucoup!
Je vais regarder ça.
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.