af83

Quelques erreurs classiques en javascript avec IE6

Nous utilisons régulièrement des doses conséquentes de javascript sur nos sites, et nous voyons souvent revenir les mêmes deux ou trois erreurs quand nous testons ce javascript avec Internet Explorer 6. Voici la liste des erreurs classiques qui méritent d'être vérifier systématiquement quand un javascript bloque sous IE6 :

1. La virgule en trop en fin de liste Souvent, quand on écrit un objet javascript avec plusieurs attributs et que cela commence à prendre de la place, il est courant de le mettre sur plusieurs lignes, comme ceci :

new Ajax.Updater(this.tabBar.area, t.action, {
method: t.method,
parameters: t.serialize(),
onSuccess: this.onSuccessCallback,
onComplete: this.onCompleteCallback,
});

En soi, écrire l'objet sur plusieurs n'est pas un problème, mais il est alors tentant de mettre une virgule à la fin de chaque ligne, notamment la dernière. Normalement, cela ne devrait pas poser de problème, c'est une syntaxe valide en javascript. Pourtant, cela provoque une erreur avec IE6. Il suffit de retirer la dernière virgule pour la corriger.

2. Les annotations Nous commentons souvent notre code avec du JsDoc. Nous avons donc des mot-clés qui commencent par un @, comme @returns, @param ou @see. Quand le commentaire est court, nous le mettons en fin de ligne :

document.observe("dom:change", this.onDomInserted.bind(this)); //@todo really efficient?

Si par malheur, le mot clé est placé juste derrière // sans espace entre les deux, IE va provoquer une erreur assez difficile à debugger. En fait, cela active les commentaires conditionnels. Pour corriger, il suffit de rajouter une espace entre // et @.

Enfin, je recommande de passer son code à JsLint pour vérifier toutes les sources d'erreurs potentielles. Cela encourage à écrire du code propre et diminue de façon notable les risques de bugs.

blog comments powered by Disqus