52 votes

Comment déboguer le script Greasemonkey avec l'extension Firebug?

Je n'ai pas trouvé le moyen de déboguer les scripts Greasemonkey avec l'extension Firebug.

Est-ce que quelqu'un sait comment faire ça ?

Merci.

25voto

Brock Adams Points 36841

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 et
ensemble extensions.firebug.filterSystemURLs de false
ensuite, vous pouvez utiliser Firebug pour déboguer le script Greasemonkey comme toutes les autres.

Cela fonctionne indépendamment de l' @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.

Solution de contournement générale des stratégies:

  1. Test de toutes les parties d'un script GM qui n'utilisent pas de GM_ fonctions, dans Firebug la console JavaScript de première. Réduire au minimum l'utilisation de GM_ fonctions et de ne pas utiliser GM_log() à tous.

  2. Tous de de Firebug console des fonctions de l'excellent travail à partir de l'intérieur d'un script GM.

9voto

Mene Points 1896

Courant 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.

Screenshot of limited-case debugging


Remarque: pour le faire fonctionner, vous avez probablement à fixer extensions.firebug.filterSystemURLs de faux. Voir "le Profilage des scripts Greasemonkey" dans Firebug, bug tracker. (Merci à Shuman)

8voto

bigml Points 71
 var e = document.createElement("script");

e.src = 'http://www.xxxxxxxx.com/yyyyyyyy.js';
e.type="text/javascript";
document.getElementsByTagName("head")[0].appendChild(e);
 

vous pouvez l'ajouter à votre xxx.user.js et l'installer dans greasemonkey.

Ensuite, vous pouvez déboguer votre js comme vous le souhaitez.

3voto

johnjbarton Points 1386

Chromebug peut afficher des scripts en mode bac à sable, http://getfirebug.com/wiki/index.php/Chromebug_User_Guide , mais je ne l’ai pas encore essayé sur Greasemonkey.

3voto

sijpkes Points 66

Chargez votre script principal en externe, au lieu de l'exécuter via GM. Donc, vous utilisez simplement GM pour injecter le script.

C'est un peu un hybride entre les solutions @bigml et @ Yuval et il utilise jquery. Cela fonctionne aussi dans les cadres.

 // ==UserScript==
// @name          My GM script
// @include     The website I want this to run on
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 
// ==/UserScript==
$(document).ready(function() {
            // fetch jquery dependent scripts using $.getScript()
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X