Merci, oui, d'implémenter bancalement (ECMA/java)script (je laisse le soin aux pinailleurs de rayer la mension inutile) et de me rajouter une demie journée de boulot pour assurer la compatibilité de mon appli. Alors, bon à savoir:

  • IE n'implémente pas Event.which.
  • IE n'implémente pas XMLHttpRequest.overrideMimeType().
  • IE veut absolument un ; après un var foo = {}.
  • IE ne veut surtout pas de , après le dernier membre d'un objet (var foo = {'bar': 'foobar',}; n'est pas correct pour IE).
  • IE ne précise pas quel objet et quelle méthode sont concernées par le message Cet objet ne gère pas cette méthode.
  • IE ne précise pas le fichier dans lequel il trouve une erreur, juste la ligne (fausse) et la colonne (super).
  • IE ne rougit même pas en faisant une erreur Unspecified Error.
  • IE ne prévient personne quand il zappe tout un .js parcequ'il contient des erreurs de syntaxe.
  • IE sous wine fonctionne mieux que IE sous w2k3.
  • IE n'implémente pas Event.currentTarget mais Event.srcElement.
  • IE n'implémente pas Element.addEventListener mais Element.attachEvent (attention, attachEvent ne prend que 2 arguments alors que addEventListener en prend 3).

Voilà. Et puis pour le fun, un petit bout de code:

var compat = {
 
	'addListener': function(el, event, listener) {
	
		if (el.addEventListener) { return el.addEventListener(event, listener, false); }
		if (el.attachEvent) { return el.attachEvent('on' + event, listener); }
		
		return false;
	
	},
	
	'getEventTarget': function(e) {
	
		if (e.currentTarget) { return e.currentTarget; }
		if (e.srcElement) { return e.srcElement; }
		if (e.target) { return e.target; }
		
		return false;
	
	}
 
};

Cela dit, un jour, je ferais la même chose mais en modifiant directement les protoypes des objets concernés.