Flash et bugs : switch/case et variables de type XML

Bonjour les amis, aujourd'hui un bug tout en subtilité sur lequel je suis tombé hier :

Conditions :

  • Vous êtes à l'intérieur d'une clause switch/case
  • Vous voulez déclarer une variable de type XML ou XMLList et lui affecter une valeur sur une même ligne

Bingo, le contenu de la variable sera null ...

Exemple :

switch(condition)
{	
  case 0:
  var content:XML = xmlListObject.node.(@id == id)[0]; // l'expression renvoie bien un noeud XML
  trace(content); // -> null
  break;

  case 1:
  ...
}

Solution :

Très simple à résoudre, il suffit de déclarer puis affecter la valeur en 2 temps :

switch(condition)
{	
  case 0:
  var content:XML;
  content = xmlListObject.node.(@id == id)[0];
  trace(content);
  break;

  case 1:
  ...
}

Voilà, simple et efficace. Merci à ce billet pour avoir trouvé la solution, à Fred pour avoir trouvé ce billet, et visiblement à Adobe pour avoir corrigé le souci dans la dernière version du player (la page du bug sur Jira est ici).

Flash et bugs : Mozilla, wmode et champs de saisie

J'inaugure aujourd'hui une nouvelle rubrique consacrée aux bugs de Flash (oui ça mérite bien une rubrique à part entière).

Pour commencer, un bug malheureusement assez connu et très ennuyeux, qui perdure depuis Flash 6 et toujours pas vraiment résolu à ce jour : le bug "du wmode". Pour les chanceux qui ne seraient pas encore tombés dessus, voici une démonstration.

Conditions :

  • Vous êtes sur Firefox, Safari ou Opera, sur Windows uniquement
  • Vous n'êtes pas américain et votre clavier n'est pas en configuration qwerty US
  • Vous avez une animation flash avec le paramètre wmode reglé sur "transparent" (pour pouvoir superposer des éléments html)
  • Vous avez un champ de saisie

Si vous réunissez ces conditions, bravo, vous vous rendez compte que vous ne pouvez pas taper le caractère "@", "?" ou bien un chiffre de la rangée haute (les chiffres du pavé numériques fonctionnent). Plutôt gênant par exemple quand vous devez saisir une adresse email.

Solutions possibles :

  • Attendre la saint glinglin qu'Adobe se bouge les fesses (le rapport de bug est ici)
  • Prévenir votre client du souci le plus en amont possible (ne vous inquietez pas, votre client adore entendre ce genre de justification technique)
  • Essayer un des hacks proposés ici, ici, ou encore , principalement à base de javascript à la rescousse.

Pour aller plus loin...

Le souci vient en fait des deux cotés, Adobe et Mozilla, comme on peut le voir dans cette discussion. Voir notamment les messages de Masayuki Nakano pour Mozilla, et Jeff Mott pour Adobe.

En résumé, un correctif vient d'être intégré récemment dans le lecteur Flash pour qu'il supporte correctement les entrées clavier unicode, et on attend maintenant la prochaine release de Firefox pour les corrections coté Mozilla. Je viens de tester avec Firefox 3.5 et ça fonctionne effectivement mais seulement à partir du deuxième caractère saisi (!). Bref, c'est pas encore trop ça mais ils y travaillent. À suivre donc...

Apple Mail et Outlook

Si toi aussi tu utilises Apple Mail et que tes correspondants sous Outlook reçoivent des caractères chinois à la place des accents, ce n'est pas un complot du FBI chinois, juste un bug d'Outlook. La solution se trouve ici.