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 :
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.
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
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 :
voila, la réponse est peut etre toute bete.
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>
Merci d'avance
Partager