Tracer les dojo.publish pour faciliter le développement et le debug
Je rebondis sur un article publié ici http://www.vodori.com/vodori/archives/277 pour vous proposer moi aussi un petit bookmarklet qui va vous permettre d'afficher dans la console de firebug tous les dojo.publish qui seront exécuté dans votre application Web.
Installer le bookmarklet
Pour installer le bookmarklet, faites simplement glisser le lien suivant dans vos marques-pages :
Afficher les dojo. publish.
L'utiliser
Une fois installé, l'utilisation est simple. Il vous suffit de charger la page qui utilise Dojo et de cliquer sur le marque-page que vous venez d'ajouter.
Comprendre le bookmarklet
Celui-ci se décompose en 2 parties :
- Ce qui transforme votre code javascript en bookmarklet :
1 2 3 4
javascript:( function(){ /* code qui va activer les traces*/ })();
- Et ce qui va ajouter des informations de trace aux méthodes Dojo.
Tracer les méthodes de Dojo
Pour tracer une méthode Dojo, nous allons simplement utiliser un dojo.connect et ajouter une ligne dans la console.
Pour notre bookmarklet, c'est dojo.publish qui nous intéresse donc :
1 2 3 | dojo.connect(dojo,'publish',function() { console.warn('dojo.publish(', arguments,')'); }); |
De la même façon, vous pourriez afficher des traces à chaque fois qu'un dojo.connect est exécuté :
1 2 3 | dojo.connect(dojo,'connect',function() { console.warn('dojo.connect(', arguments,')'); }); |
Note : Afin d'éviter les fuites mémoire, il est important que tous les dojo.connect de votre application soit ensuite déconnectés.
Ces traces peuvent donc vous aider à vérifier que chaque dojo.connect a son opposé (dojo.disconnect).
Le code complet du bookmarklet
Finalement, votre bookmarklet devrait ressembler à ceci :
1 2 3 4 5 6 | javascript:( function(){ dojo.connect(dojo,'publish',function() { console.warn('dojo.publish(', arguments,')'); }); })(); |
Un peu de fioriture plus loin, votre bookmarklet est fin prêt :
1 2 3 4 5 6 7 8 9 10 11 12 | javascript:( function(){ if(typeof dojo=='undefined'){ console.error('Dojo est ind\u00e9fini'); return; }else{ dojo.connect(dojo,'publish',function() { console.warn('dojo.publish(', arguments,')'); }); console.info('Trace de dojo.publish activ\u00e9e'); }; })(); |
Il ne reste plus qu'a adapter ceci selon vous besoin pour créer vos propres bookmarklet.
- Vous devez vous identifier ou créer un compte pour écrire des commentaires


- Ben -