2009-01-13 12 views
4

J'ai rencontré des messages qui ont déclaré: «J'aimerais utiliser l'extension A, mais cela ne fonctionne pas avec l'extension B». Est-ce quelque chose dont je dois me préoccuper quand je construis une extension Firefox?Compatibilité extension Firefox

Quelles sont les principales raisons pour lesquelles les extensions sont en conflit les unes avec les autres? Quelles sont les meilleures pratiques pour s'assurer que mon extension fonctionne bien avec toutes les autres extensions?

Répondre

3

La raison la plus courante pour les conflits d'extension est l'utilisation des noms communs dans un espace de noms partagé. Par exemple, si deux extensions définissent une variable globale nommée "log" dans une superposition browser.xul, une seule d'entre elles fonctionnera comme prévu, puisque le "log" de l'autre sera écrasé.

La solution commune est d'apprendre lequel de vos ID sera jeté dans un espace partagé et de préfixer ceux avec votre propre préfixe unique.

Pour le code JavaScript que vous pourriez (et il est une bonne idée de toute façon) mettre votre code dans un objet:

var myExtension = { 
    onLoad: function() { ... }, 
    ... 
} 

au lieu de

function onLoad() { 
} 

Voici une très bonne écriture sur le sujet: http://blog.userstyles.org/2007/02/06/avoiding-extension-conflicts/.

D'autres conflits sont rares et doivent être débogués au cas par cas. Par exemple, il y avait un bug dans Mozilla qui provoquait la perte des écouteurs d'événement sur un nœud lorsque le nœud était déplacé sur le DOM. Cela a provoqué plusieurs conflits pour l'extension de l'éditeur de menu qui a permis à l'utilisateur de réorganiser les éléments de menu.

1

Je ne sais pas (conflit de ressources est l'endroit évident pour regarder) mais vous pouvez avoir une meilleure affectation de chance à mozilla.dev.extensions

Questions connexes