Si vous souhaitez participer à la vie de dojotookit-fr, nous recherchons : des traducteurs, des personnes pour animer le blog ou écrire des articles, etc...
Prévenez nous par mail (ben_AT_dojotoolkit-fr_DOT_org) ou par chat (#dojo-fr sur irc.freenode.net)

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.