Ayant eu récemment à essuyer quelques plâtres pour déboguer mes applications flex sur divers navigateurs, je couche sur ce blog le résultat de mes différentes tribulations.

Tout d’abord, comment changer le browser pour déboguer vos applications ?

Sous flex builder 3, c’est assez simple : menu Window / preferences, rubrique General, Web Browser.

Cliquer sur new si votre navigateur de prédilection n’a pas déjà été configuré, donnez lui un petit nom dans Name, dans Location, mettez le chemin complet du programme du navigateur.

En googlant, j’ai trouvé que pour Chrome il fallait ajouter le paramètre -sandbox dans parameters. Je l’ai mis sans me poser plus de question : ça marche ; je vous laisse le soin de vérifier l’utilité réelle de ce paramètre si le cœur vous en dit.

Au commencement était Firefox

Comme tout développeur web un tant soit peu civilisé, j’ai remplacé internet explorer comme navigateur par défaut de mon système windows par un autre navigateur, en l’occurrence firefox. Le débogueur utilisant par défaut le navigateur par défaut du système, je déboguait donc dans la joie et la bonne humeur sous firefox mes applications.

Las ! Depuis je ne sais plus trop quelle version (la 3.6 ?) firefox arrête le plugin flash lorsqu’il semble figé plus de 45 secondes. Par conséquent, au bout de 45 secondes sur un point d’arrêt l’application est tuée : cela rend le débogage pour le moins problématique…

J’ai trouvé dans l’article suivant la solution (très simple en fait) à ce problème :

  • tapez about:config dans un onglet de votre firefox
  • rassurez firefox sur la pureté de vos intentions en cliquant sur le bouton promettant solennellement que vous ferez attention
  • sur la version 4 ou plus de firefox, recherchez le paramètre dom.ipc.plugins.timeoutSecs et mettez sa valeur à -1
  • sur les versions antérieures faites ceci en plus de la manipulation précédente : si le paramètre dom.ipc.plugins.enabled.npswf32.dll existe, mettez sa valeur à false.

Puis il y eu Chrome …

Avant de trouver la solution ci-dessus, je me suis résolu à utiliser Chrome comme navigateur pour déboguer. Malheureusement, j’avais beau avoir téléchargé et installé la dernière version de plugin flash de débogage, rien n’y faisait : l’application ne s’arrêtait pas sur mes points d’arrêt, et au bout de plusieurs minutes, flex me déclarait ne pas avoir eu de retour du navigateur.

En fait, Chrome a une version embarquée du plugin flash qu’il faut désactiver pour que ce soit votre version de débug qui soit utilisée. Pour ce faire, là encore, c’est assez simple :

  • tapez about:plugins dans un onglet de votre navigateur chrome
  • cliquez sur Détails pour développer le détail des fichiers de vos plugins
  • sous Flash, il devrait y avoir au moins 2 fichiers : la version de débug  que vous n’avez pas omis d’installer + la version embarquée, cette étant dans un sous-répertoire de l’application chrome (alors que la version de débug est dans un répertoire Macromédia/flash). Désactivez le fichier de la version embarquée et le tour est joué : ce sera désormais la version de débug qui sera utilisée.

Et n’oublions pas Internet Explorer

Même si vous utilisez préférentiellement un autre navigateur, vous aurez probablement besoin, à un moment ou à un autre, de déboguer sous Internet Explorer. En effet, il faut se rappeler qu’il existe en réalité 2 plugins flash différents :

  • Un activeX pour la famille des Internet Explorer
  • Un plugin commun à tous les autres navigateurs

Bien que ces 2 plugins soient sensés être identiques en terme d’usage, ce n’est pas le cas dans les faits et il existe des comportements et des bugs spécifiques à chacun. Par conséquent il y a gros à parier que vous aurez un jour à vérifier le comportement de votre application sur le plugin d’Internet Explorer.

Si vous avez bien suivi ce qui a été dit, précédemment, vous aurez également compris que pour pouvoir déboguer sous IE, il faudra que vous installiez  le plugin de débogage pour Internet Explorer qui est différent de celui utilisé par les autres navigateurs.

Pour fini, quelques liens (très) utiles :

JC