Il y a huit jours je vous présentais ma toute dernière extension firefox, adaptée d’un idée qui me trottait dans la tête depuis un certain temps et que j’avais eu le temps de développer sur un coin de table à l’arrache de sorte que je puisse la montrer le lendemain à Peter Sünde, co-créateur de Flattr et de visite en France. Sauf que l’extension présentait un certain nombre de bugs que j’ai eu beaucoup de mal à résoudre du fait de leur complexité…
C’est maintenant chose faite et, en installant överallt, vous pouvez désormais intégrer Flattr sur n’importe quel site web 2.0 sans gêner la navigation (c’est mieux quand même ^^) !
Les bugs qui subsistaient
Les bugs en question venaient de deux erreurs que j’ai commises :
Attacher la tâche de remplacement à un évènement beaucoup trop précoce (à la construction du DOM alors qu’elle est maintenant attachée à la fin de chargement de la page); ce comportement avait pour effet de ruiner la structure de la page et d’empêcher certains appels Ajax de se faire (pas d’élément du DOM de destination existant).
Et, plus grave, le remplacement, à la barbare, de l’ensemble du code du body par une version intégrant les boutons Flattr. Ce comportement a été solutionné par un parcours des textNodes du DOM de la page et un remplacement au plus bas niveau du DOM (dans le nodeValue du textNode donc) par explosion de la chaine en 3 parties : avant le code, le code, et après le code. Comme on travaille sur des textNodes aucun évènement ne peut être attaché dessus et mes beaux eventlisteners resteront en place ! J’ai aussi du travailler sur une création maison des boutons Flattr, ne pouvant intégrer une iframe aussi simplement dans le DOM que lorsque je travaille avec un bête innerHTML. Le truc cool c’est que du Js à reverse c’est plutôt simple ! Continuer la lecture