11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour
Après avoir lu le tutoriel sur Alsacreations j'ai essayé ce code

		   if (window.addEventListener) {
      			window.addEventListener('click', ajout, true);
   			}
			else
				if (document.addEventListener) {
      				document.addEventListener('click', ajout, true);
   				}
				else
					if (window.attachEvent) {
      					window.attachEvent("onclick", ajout);
   				}


Pas de problème sur FF. Par contre sur IE, le navigateur n'exécute rien dans la fonction ajout. Quelqu'un sait il pourquoi ?
Merci
Modifié par coucou (28 Dec 2006 - 14:04)
Modérateur
Salut,

Dans le tuto, il ne faut pas comprendre window.attachEvent('onclick', ajout); mais plutôt à oElem.attachEvent('onclick', ajout);

window, c'est valable pour 'onload' et tu testes bien si window.attachEvent existe dans ton if mais là, tu cliques sur oElem donc attachEvent doit lui être associé... Si ça marche sous Fx, c'est dû au fait que tu es en mode capturant, ce que ne sait pas faire IE qui ne fonctionne qu'en mode "effervescent"... (ce pourquoi je t'avais dit de mettre le troisième paramètre de la méthode addEventListener à false pour obtenir un comportement identique sur chaque navigateur...)

Sinon, je te ferais la même remarque que le sujet précédent, il vaut mieux laisser les arguments de la fonction plutôt que d'inclure directement tes paramètres dans ces méthodes tout simplement parce que ta fonction n'est plus réutilisable et qu'il te faut dès lors dupliquer ces lignes pour chacun des cas...

Enfin, dans la fonction que je t'avais donné, je testais sur oElem.addEventListener et non sur window.addEventListener et document.addEventListener (utile pour résoudre un bug d'Opera). oElem étant compris dans window et document, il était inutile de doubler les conditions...
Modifié par koala64 (28 Dec 2006 - 13:07)