Visit Mozilla.org

Extraits de code:Barre d'outils

Un article de MDC.

Sommaire

[modifier] Ajout d'un bouton de barre d'outils

Deux tutoriels sont disponibles :

[modifier] Ajout d'un bouton par défaut

Lors de l'installation de votre extension, si vous ajoutez dans la barre d'outils un bouton la concernant en écrasant Barre d'outils - Personnaliser, ce bouton n'est pas disponible par défaut. L'utilisateur doit le déplacer dans la barre d'outils. Voici un bout de code pour faire apparaître votre bouton dans la barre d'outils par défaut, après la première installation et le redémarrage du XPI.

L'ajout d'un bouton par défaut est une pratique discutable, car difficile à réaliser de manière fiable : l'utilisateur peut avoir masqué la barre d'outils sur laquelle vous ajoutez votre bouton, ou avoir personnalisé ses barres d'outils d'une manière empêchant votre code de bien fonctionner.

Un bug a été rempli pour que Firefox fournisse une API pour cela.

[modifier] Notes

  1. Cet exemple est spécifique à Firefox, mais il devrait aussi fonctionner avec Thunderbird en mettant les nœuds corrects.
  2. N'ajoutez votre bouton que s'il apporte une réelle valeur ajoutée, et sera un point d'entrée fréquent pour votre extension. Pensez que l'espace est limité dans l'interface utilisateur, et à ce que veut réellement l'utilisateur.
  3. Ce code doit être inclus dans un overlay de browser.xul.

[modifier] Exemple

 try {
   var firefoxnav = document.getElementById("nav-bar");
   var curSet = firefoxnav.currentSet;
   if (curSet.indexOf("my-extension-button") == -1)
   {
     var set;
     // Placez le bouton avant l'urlbar
     if (curSet.indexOf("urlbar-container") != -1)
       set = curSet.replace(/urlbar-container/, "my-extension-button,urlbar-container");
     else  // à la fin
       set = firefoxnav.currentSet + ",my-extension-button";
     firefoxnav.setAttribute("currentset", set);
     firefoxnav.currentSet = set;
     document.persist("nav-bar", "currentset");
     // Si vous ne faites pas l'appel suivant, des choses marrantes peuvent se produire
     try {
       BrowserToolboxCustomizeDone(true);
     }
     catch (e) { }
   }
 }
 catch(e) { }