Le clonage, c'est pas classe
J'ai été emballé par le calendrier fourni par electricprism.com --> http://electricprism.com/aeron/calendar/
Je m'empresse donc d'en intégrer la version rendue compatible avec mootools 1.2 ... Jusque là, emballé, je le suis toujours :)
Puis je reçois un message. Le message classique, le cauchemard quotidien ou presque de toute personne ayant fait du développement web pour un autre navigateur que lynx -dump :
- Ca marche pas sous IE (8) ...
- ... (Moment de solitude) ...
En quelques mots, les flèches ne sont pas affichées de part et d'autre du mois ...
Un parcours du code me fait tomber sur ces lignes :
var prev = new Element('a').addClass(this.classes.prev).appendText('\x3c'); // < var next = new Element('a').addClass(this.classes.next).appendText('\x3e'); // >
Ce qui, somme toute, fleure bon le code fonctionnel.
Je vérifie alors comment sont placées les flèches sur le calendrier :
prev.clone().addEvent('click', function(cal) { this.navigate(cal, 'm', -1); }.pass(cal, this)).injectInside(caption);
Tout cela a l'air fort bien, j'alert donc le code html obtenu et là, prise de conscience ... Je me rends compte que les petites flèches servant à passer aux mois suivant et précédent ne sont pas créées avec le même code HTML sous les navigateurs qui marchent et IE8.
Dans les navigateurs qui fonctionnent, la flèche précédent est un lien affublé de la classe prev (respectivement suivant / next). Dans IE8, ce sont des liens tout bêtes.
Après divers essais et insultes que je préfère taire ici, j'en viens à supprimer l'appel à clone(). En effet, j'utilise la navigation uniquement pour les mois, il n'y a donc qu'une instance de chaque flèche. Halte au clonage !
Là, miracle ! Mes flèches retrouvent leur classe naturelle.
Conclusion : le clonage à la IE8 / mootools 1.2 ne conserve donc pas tout le génôme. Cela ressemble à s'y méprendre à un bug. A utiliser en connaissance de cause donc ! |