2010-01-11 7 views
1

Je comprends que jQuery est le framework Javascript préféré pour les extensions Firefox, mais je suis à l'aise avec Prototype et j'ai besoin d'implémenter une simple extension Firefox. Malheureusement, j'ai de la difficulté à invoquer une méthode de prototypage. Chaque appel de méthode aboutit à un no-op: il n'y a pas d'erreur ou d'autre signe que l'appel de la méthode a eu lieu.Comment puis-je utiliser Prototype dans une extension Firefox?

est ici le code de recouvrement:

<overlay id="liteextension-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 

Cet appel à une méthode prototype retourne un tableau vide, même si il y a des divs dans la page:

var all_divs = $$('div'); 

Le « prototype Le fichier .js "vit dans le même répertoire que le fichier XUL.

+0

Il peut y avoir une exception uncaught événement. Pouvez-vous exécuter firebug et activer "arrêter toutes les erreurs", et voir ce que dit le débogueur de script? Soit cela ou enveloppez votre ligne de code dans un bloc try/catch et regardez l'exception? quelque chose de simple comme 'try {var a = $$ ('div')} catch (e) {alerte e.message}' pourrait aider. – glomad

Répondre

2

L'utilisation de bibliothèques telles que prototype et jquery dans une extension Firefox est compliquée. Le problème est que le JQuery n'est pas chargé dans le même contexte lorsqu'il est chargé à partir de XUL que lorsqu'il est chargé à partir d'une page Web. Donc, si vous essayez de manipuler des choses dans une page, une bibliothèque chargée dans XUL ne verra pas la page DOM où elle s'attend à ce qu'elle soit. Avec JQuery (pas sûr du prototype), vous pouvez résoudre ce problème en pointant vers le bon contexte. Deuxièmement, l'importation de bibliothèques à l'intérieur d'une extension dans une superposition browser.xul placera toutes les fonctions et variables définies dans la bibliothèque dans l'espace de noms global, potentiellement en conflit avec d'autres extensions et même avec le code de Firefox. Cela pourrait causer un gros désordre.

Il y a plus d'informations dans ce post sur le forum, il est sur le point JQuery, mais les mêmes problèmes ... peut-être appliquer les solutions proposées pourraient être utiles pour vous:

http://forums.mozillazine.org/viewtopic.php?f=19&t=1460255

Questions connexes