Comment déboguer le script Greasemonkey avec l'extension Firebug?
Je n'ai pas trouver un moyen de déboguer des scripts Greasemonkey avec l'extension Firebug.
Personne ne sait comment faire cela ?
Grâce.
Vous devez vous connecter pour publier un commentaire.
Updatier: Le Mene+Shuman correctif est maintenant cassé avec Firefox 30 et Firebug 2. Firefox 31 peut fournir des solutions de contournement (étudiera). Dans l'intervalle, l'utilisation de la "solution de contournement Générale les stratégies énumérées ci-dessous.
Mise à jour: Cette réponse est aujourd'hui obsolète.
Si vous ouvrez
about:config
etensemble
extensions.firebug.filterSystemURLs
àfalse
ensuite, vous pouvez utiliser Firebug pour déboguer le script Greasemonkey comme toutes les autres.
Cela fonctionne quel que soit le
@grant
mode.Voir Mene la réponse -- avec une aide de la part de Shuman.
Vieille réponse:
Parce que Greasemonkey opère dans un bac à sable, Firebug ne peut pas le voir. Il n'y a pas de moyen facile de contourner cela.
Générale des stratégies de contournement:
Test de toutes les parties d'un script GM qui n'utilisent pas
GM_
fonctions, dans Firebug la console JavaScript de première. Réduire au minimum l'utilisation deGM_
fonctions et n'utilisez pasGM_log()
à tous.Tous De Firebug
console
fonctions grand travail à partir de l'intérieur d'un script GM.vous pouvez l'ajouter à votre xxx.user.js et l'installer dans greasemonkey.
Ensuite, vous pouvez déboguer votre js comme vous le souhaitez.
Actuelle de Firefox et Firebug peut désormais actuel de débogage de scripts Greasemonkey juste comme n'importe quel autre javascript. Il suffit de trouver votre
*.user.js
script dans le menu déroulant. La console fonctionne également.Cela fonctionne au moins sur Firefox 28.0 et Firebug 1.12.7; je n'ai pas essayé les versions antérieures.
Remarque: pour le faire fonctionner, vous avez probablement pour définir
extensions.firebug.filterSystemURLs
à false. Voir "Le profilage des scripts Greasemonkey" dans Firebug, bug tracker. (Grâce à Shuman)@grant none
mode et/ou de l'utilisation des écouteurs d'événement. Si vous avez une recette qui fonctionne pour réelle de débogage, afficher les détails.@grant none
. Tout a fonctionné comme prévu.extensions.firebug.filterSystemURLs
àfalse
dansabout:config
, voir ceciAucune des autres solutions ici a fonctionné pour moi, mais Jan Odvarko's réponse sur la façon de déboguer les extensions Firefox a fonctionné parfaitement pour les scripts GreaseMonkey ainsi:
Ensuite, il suffit de chercher le nom de votre script et démarrer le débogage.
Il peut être fait en utilisant natif de Firefox débogueur comme il a été mentionné précédemment. Ci-dessous est l'instruction pour les versions récentes de Firefox.
Définissez les préférences suivantes dans
about:config
:Ouvrir le script global fenêtre de débogage via
Outils → Développeur Web → Navigateur boîte à outils → Débogueur (ou Ctrl+Maj+Alt+I) .
Recherche pour le nom de votre script et de commencer à débogage.
Chromebug pouvez le voir en bac à sable scripts, http://getfirebug.com/wiki/index.php/Chromebug_User_Guide, mais je n'ai pas essayé sur Greasemonkey.
-- Cette réponse est obsolète, veuillez utiliser @Brock Adams solution ci-dessus --
Charge de votre script principal de l'extérieur, au lieu de le lancer via GM. Si vous êtes tout simplement à l'aide de GM pour injecter le script.
C'est un peu un hybride entre le @bigml et @Yuval solution et il utilise jquery. Il travaille aussi dans des cadres.
J'ai essayé ChromeBug, il ne semble pas fonctionner.
Avec FireBug, j'ai eu le point de départ de la réussite par l'ajout de "debugger" à mon GM code. Cela provoque un point d'arrêt et je peux inspecter les variables sur la pile, mais le fichier n'est pas affiché donc je ne peux pas l'étape ou quoi que ce soit.
J'ai eu le plus de succès avec FirebugMonkey (https://
addons.mozilla.org/en-US/firefox/addon/13623/), que je viens de recevoir de travail à faire à base de
débogage de scripts GreaseMonkey grâce à quelques explications dans un
commentaire récent sur la page d'extension par f0rsvinn. Voici les instructions que j'ai posté juste au http://groups.google.com/group/greasemonkey-users/browse_thread/thread/994cfa58c79d222:
Il n'est jamais venu à moi que la façon dont il fonctionne, c'est en créant sa propre
sandbox autour du script plutôt que d'utiliser Greasemonkey, vous
en fait tourner GM off. Il y a quelques GM aspect des choses qui
ne fonctionnera pas, mais parce que le script n'est pas vraiment dans GreaseMonkey.
Comme un exemple, GM_getValue renvoie undefined.
Encore, il travaille pour la base de débogage - et c'est beaucoup mieux que rien.
Les étapes d'utilisation sont comme suit:
Les scripts que vous avez ajouté dans le ScriptManager devrait être visible dans le
FireBug liste des scripts.
Similaire à @bigml de la suggestion, vous pouvez l'exécuter sans privilège si vous configurez un serveur web local (apache) pour desservir le fichier de script, puis dans votre script ajouter quelque chose le long des lignes de:
Bien sûr, vous ne seriez pas en cours d'exécution dans un contexte privilégié. Mais de cette façon, vous pouvez facilement en permanence le script de débogage comme n'importe quel autre script.
Comme les autres l'ont dit, vous pouvez configurer un simple serveur HTTP et de le servir à votre page à l'aide de Greasemonkey comme suit:
WEBrick et Python -m SimpleHTTPServer sont bons pour cela. On peut également exposer le GM_... les fonctions de script par l'ajout d'un gestionnaire d'événements personnalisés pour le document dans GreaseMonkey:
puis dans les script, l'élévation de cette manifestation sur l'arbitraire d'un élément du DOM va exécuter le gestionnaire et modifier l'élément du paramètre de réponse: