Sep 16, 2008

Funtion.apply() + Null + IE = pas bon...

Apres avoir passé quelque temps à tenter de trouver le probleme avec mon script (il marchait bien dans Firefox mais pas dans Internet Explorer... c'est pas nouveau), j'ai finalement compris que Internet Explorer n'aime pas quand on passe Null comme deuxieme parametre à Function.Apply();

Si on se fit a la documentation de Mozilla, le second parametre devrait etre:
An argument array for the object, specifying the arguments with which fun should be called, or null or undefined if no arguments should be provided to the function.
Comme j'utilisais Function.Apply() seulement pour "binder" this a ma fonction, j'ai donc décidé, en me fiant a la documentation de Mozilla, de passer null comme deuxieme parametre. Apparament, Explorer n'a pas aimé ca. Je m'suis donc rendu compte, apres un peu de recherche, que Internet Explorer allais lancer une erreur de type "TypeError" si le fameux second parametre n'est pas du type Array.

Solution; omettre le second parametre et utiliser seulement (par exemple) myFunction.apply(this) plutot que d'utiliser myFunction.apply(this, null). Firefox n'a pas de probleme avec cette solution puisque selon sa propre documentation, le deuxieme parametre peut etre null ou undefined, alors voilà! Tout le monde est content. 

Bon ca peu sembler un peu bete mais ca m'a tout de meme fait perdre du temps, et c'est pas evident de trouver le probleme en googlant donc... en esperant que ca puisse aider quelq'un avec le meme probleme! 

No comments: