2008-10-24 6 views
11

J'écris du code javascript qui est lu en tant que chaîne et exécuté via eval() par une extension firefox. Firebug "voit" mon script donc je ne peux pas utiliser de points d'arrêt, voir des objets, etc.Déboguer des scripts de type greasemonkey

Je suis actuellement en train d'utiliser la console d'erreur de Firefox que je commence à trouver restrictive. Quelles sont mes autres options? Idéalement, je serais capable d'utiliser Firebug ou quelque chose de similaire. Comment les gens déboguent-ils généralement les scripts Greasemonkey?

J'ai essayé d'utiliser Lint et d'autres validateurs, mais mon script utilise beaucoup d'objets et de fonctions fournis par l'environnement d'extension, rendant beaucoup d'erreurs rapportées non pertinentes. En outre, la sortie a tendance à être trop nitpicky (mise au point de problèmes d'espacement, etc).

Répondre

1

Pour autant que je sache, Firebug prend en charge eval() débogage depuis 1.1, en particulier pour Greasemonkey, vous pouvez utiliser GM_log pour l'enregistrement de base, vous trouverez peut-être utile cet outil aussi:

2

J'ai créé une console interactive pour déboguer G scripts reasemonkey. Il nécessite Google Gears, mais il inclut un historique persistant des commandes qui ont été tapées.

MISE À JOUR: Here's a link à un billet de blog décrivant en utilisant GreasyThug pour déboguer un script GM. Il a une procédure étape par étape pour répliquer une erreur et concevoir une solution.

1

J'utilise ce code pour pouvoir accéder à la page DOM en utilisant jQuery (pas besoin de hacks unsafeWindow) et connectez-vous des erreurs à la console Firebug:

(function(_, $){ 
    try { 
    var GM_log = function(obj) { _.console.log(obj); } 

    // $("#my_div").reaplaceWith("hello world!"); 
    // _.someFunctionDefinedInTheWebsite(); 

    } catch(e) { 
    GM_log(e); 
    } 
})(unsafeWindow, unsafeWindow.jQuery); 

NOTE: cet exemple suppose que la page que vous utilisez utilise déjà jQuery