Foire aux questions sur les extensions

Voici quelques réponses rapides aux questions les plus fréquentes concernant le développement des extensions. Elles sont écrites à l'attention de Firefox, mais la plupart, voire toutes, peuvent être transposées pour SeaMonkey, Thunderbird ou n'importe quelles autres applications.


Si vous voulez commencer, essayez nos tutoriels, Construire une extension ou Guide xulfr sur les extensions. Utilisez l'Extension Wizard pour générer un modèle de départ.

Assurez vous d'avoir configuré votre environnement de développement.

Débogage

Vous devez avoir configuré votre environnement de développement avant de pouvoir essayer de déboguer votre extension.

Le débogueur JavaScript Venkman peut être utile dans beaucoup de cas complexes, souvenez vous de désactiver l'option "Debug -> Exclude Browser Files" quand vous travaillez sur le code de votre extension.

Comment puis-je voir les erreurs dans mon code ?

Après avoir défini la préférence javascript.options.showInConsole à true, les erreurs seront reportées dans la console d'erreurs JavaScript. Attention, malgré son nom, toutes sortes d'erreurs y sont reportées. L'affichage de toutes les erreurs JavaScript dans la console rendra beaucoup plus facile la recherche d'erreurs dans votre code.

Comment puis-je afficher ce que mon extension fait ?

Vous pouvez utiliser les fonctions alert(), dump(), Components.utils.reportError(), ou encore le service console pour afficher le contenu de variables et du texte de débogage.

Pourquoi mon script ne marche pas correctement ?

Si votre script ne fonctionne pas comme prévu, la première chose à faire est de vérifier la console d'erreurs JavaScript (voir plus haut).

Une erreur fréquente est d'essayer d'accéder au DOM d'une fenêtre avant son total chargement. Ceci arrive si vous placez le code d'initialisation au tout début de votre script (par exemple en dehors de toutes fonctions). La solution est d'utiliser un événement load pour retarder votre code jusqu'à la fin du chargement de la fenêtre :

function exempleDemarrageNavigateur(evenement)
{
  // placez votre code de démarrage
}
window.addEventListener("load", exempleDemarrageNavigateur, false);

L'accès au document d'une page Web ne marche pas

Pour récupérer le document de la page Web active depuis un overlay browser.xul, vous devez utiliser content.document plutôt que document qui est le document de la fenêtre de navigation elle-même. Consultez Travailler avec des fenêtres dans le chrome#Fenêtres de contenu pour plus de détails.

De plus, par défaut, XPCNativeWrapper vous empêche d'accéder aux objets définis par script dans une page Web et d'autres choses également.

J'obtiens une erreur d'analyse XML, mais le code m'a l'air bon !

Une source classique d'erreurs d'analyse (celles <font color="red">affichées en rouge</font> avec <font color="red">-------------^</font> dessous) provient d'un caractère & ou <, qui ont une signification spéciale en XML, dans votre script ou dans une valeur d'attribut. Par exemple :

<button oncommand="window.open('http://example.com/q?param1=value&param2=val2')"/>

ou

<script>function lesser(a,b) { return a < b ? a : b; }</script>

Le problème peut être résolu par l'une de ces méthodes :

  1. remplacez le caractère avec sa représentation non conflictuelle XML (Ex : "&" -> "&amp;", "<" -> "&lt;")
  2. (au cas où il s'agit d'un nœud texte, tel qu'un script) placez des balises CDATA autour du texte :
    <script><![CDATA[
       function lesser(a,b) {
         return a < b ? a : b;
       }
     ]]></script>
  3. placez votre script dans un fichier séparé qui sera inclus :
    <script type="application/x-javascript" src="script.js"/>

Exemple de code

La méthode la plus simple pour trouver le code qui vous est utile est d'étudier une extension (ou le code source de Mozilla) et de regarder ce qu'il fait (les fichiers XPI et JAR utilisent le format ZIP).

Il existe aussi de la documentation. Consultez la liste des articles relatifs aux extensions sur MDC et des exemples de codes sur xulfr (ou sur MozillaZine).

Où puis-je avoir plus d'aide ?

Consultez Extensions:Autres ressources et Extensions:Communauté.

Avant de solliciter de l'aide, assurez vous de définir les préférences de débogage et vérifier la console d'erreurs JavaScript. Faites également une recherche avant de solliciter de l'aide et lisez cette FAQ !

Étiquettes et contributeurs liés au document

Étiquettes :
Contributeurs ayant participé à cette page : Yozh88, Sheppy, Cbi1net, VincentN, Chbok, Herisson, RM77, BenoitL, Mgjbot, Jules Papillon, Kyodev
Dernière mise à jour par : Yozh88,