Bonjour,

Je suis tombé sur un truc rigolo (ou pas), je viens de voir en travaillant une lib que IE n'interprète pas le "this" dans la situation suivante alors qu'avec l'equivalent addEventListener ca passe sans probleme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
obj.attachEvent("onclick", function(){document.title = this.innerHTML;}, true);
// IE plantera a cause de "this" et affichera undefined
J'ai tenté de faire quelque chose avec une closure et Apply mais du coup la fonction n'est plus enlevable avec les fonctions adéquates.

Ceci étant, je voudrai savoir s'il y a possibilité de le faire reconnaitre d'une façon ou d'une autre sur IE !

J'ai fais une page de base pour bien se rendre compte de la chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
<html>
<head>
</head>
<body>
 
<div id="toto">kikou</div>
 
<script type="text/javascript">
 
// appellera la fonction lit() au click sur "toto" 
addEvent(document.getElementById("toto"), "click", lit);
 
 
function lit()
{
        // normalement, doit afficher le contenu de "toto" et enleve l'ecouteur
        // mais sur IE, ce fameux "this" n'est pas pris en compte
	alert(this.innerHTML);
	removeEvent(document.getElementById("toto"), "click", lit);
}
 
// fonctions pratiques
function addEvent(obj, ev, fct)
{
	if(obj.attachEvent)
	{
		obj.attachEvent("on" + ev, fct, true);
	}
	else
	{
		obj.addEventListener(ev, fct, true);
	}
}
 
function removeEvent(obj, ev, fct)
{
	if(obj.detachEvent)
	{
		obj.detachEvent("on" + ev, fct, true);
	}
	else
	{
		obj.removeEventListener(ev, fct, true);
	}
}
 
</script>
</body>
</html>
voila, la réponse est peut etre toute bete.

Merci d'avance