Bonjour tout le monde,

Bon, je ne savais pas trop où poster ma question car elle concerne le
développement d'une toolbar sur Firefox. Les langages en jeux sont
donc XML (XUL) et JS mais le moteur est en JS.

Mon extension marche. Rassurez-vous, je ne vais pas vous demander
comment développer une extension FF ! J'ai simplement besoin d'aide
sur un évènement...

Alors voilà, sur les tutoriels que j'ai pu lire, concernant le développement
d'extension FF, on recommande toujours de créer son objet JS (pour
son extension), par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var MaToolbar =
{
  Attr1 : 0,
  Attr2 : new Array(),
 
  Load : function()
  {
    // code du chargement de la toolbar
  },
 
  Fct1 : function(p1, p2) { /* ... */ },
 
  Fct2 : function() { /* ... */ }
}
puis, dans le JS principal, faire un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
window.addEventListener('load', function()
{
  MaToolbar.Load();
}
Ceci marche très bien, à l'ouverture de FF, le code du chargement est bien appelé. Mais maintenant, pour effectuer des traitements
spécifiques à chaque page ouverte par exemple, j'ai trouvé sur le net
qu'il fallait attacher (au premier chargement) un évènement nommé "DOMContentLoaded"
sur l'élément "appcontent", comme ceci (ma fonction Load) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Load : function()
{
  var appcontent = document.getElementById('appcontent');
  if (appcontent)
    appcontent.addEventListener('DOMContentLoaded', MaToolbar.PageChargee, true);
}
Voici le code de MaToolbar.PageChargee :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
PageChargee : function()
{
  alert('Page chargée : ' + content.document.location.host);
}
Mon problème est le suivant. Je ne comprends pas
pourquoi cet évènement est appelé non pas une fois mais bien plusieurs fois à chaque chargement de page
. Cela varie en fonction
de la page, entre 2 et 5 fois par page en moyenne... Je pense qu'il est appelé au chargement de la page visitée, çà c'est certain, mais
également de "fragments" (XUL ou je ne sais quoi) chargés eux aussi par le navigateur ?

Je pense qu'il est possible de trouver un évènement plus intéressant à
écouter. Un évènement qui ne se déclencherait vraiment qu'une fois lorsque une page est ouverte. Connaitriez-vous cet évènement ou
une meilleur façon d'écouter ?


Et enfin, dernière question. Connaitriez-vous un évènement qui notifie
le changement d'onglet "Je clique sur un autre onglet" ?


Merci d'avance pour votre aide.