Cet après-midi, j'ai rencontré un bogue un peu spécial avec la librairie Prototype.js. Pour une raison particulière, plusieurs fonctions étaient reliées au même événement, celui du chargement de la page (load).
Comme d'habitude, tout fonctionnait à merveille dans Firefox mais une fois testé dans Internet Explorer, un message d'erreur JavaScript était lancé. Avec un collègue de travail, nous avons tenté un certain temps de chercher la réponse jusqu'à ce qu'on s'impatiente et qu'on décide de suivre la trace des appels à l'aide de Firebug (Firefox) et Firebug Lite (IE).
En considérant le snippet de code suivant (simplifié par rapport à l'exemple réel) :
/*On remarque que la séquence des appels dans Firefox (Firebug) indique :
les scripts suivants sont inclus dans la page
/js/firebug-lite-min.js
/js/prototype-1.6.0.3-min.js
*/
document.observe('dom:loaded', function(){ console.log('dom:loaded # 1'); });
document.observe('dom:loaded', function(){ console.log('dom:loaded # 2'); });
Event.observe(window, 'load', function(){ console.log('load'); } );
Tandis qu'Internet Explorer 7 affiche (Firebug Lite) :
Comme on ne fait pas de miracle, on a tout rapatrié dans la même fonction. Si quelqu'un croit avoir la solution, n'hésitez pas à me la partager.