Bonjour à tous,
je reviens vers vous pour trouver une solution à un problème que j'ai simplifié au maximun...
En règle général la solution me vient rapidement quand le problème est simplifié, mais là ...
Mes compétences ne suffise plus...
Code Javascript :
var essai = Class.create();
essai.prototype = {
initialize : function(texte){
this.texte = texte;
document.addEventListener("click",this.callThisMethod.bind(this),false);
document.addEventListener("click",OtherSimpleFunction,false);
},
callThisMethod : function(){
this.ThisMethod();
},
ThisMethod : function(){
alert(this.texte);
//Le problème se trouve donc ICI, juste là...
//Pourquoi la ligne ci-dessous ne fonctionne pas
document.removeEventListener("click",this.callThisMethod.bind(this),false);
}
}
function OtherSimpleFunction(){
alert('Hello, Just One Time');
document.removeEventListener("click",OtherSimpleFunction,false);
}
var a = new essai('Hello, Forever ... Grrrrr');
La recette est simple:
- Un page vide
- On ajoute le code Javascript
- On clique une fois dans le document
- Nous avons donc deux alert "Hello, Forever ... Grrrrr" et "Hello, Just One Time"
- (Tous va très bien jusque là...)
- On clique à nouveau (parce qu'on aime bien cliquer)
- (C'est là que tout va mal)
- Le message alert "Hello, Forever ... Grrrrr"
Je ne comprend pas pourquoi, alors que je suis supposé l'avoir enlevé comme le premier...
Avez-vous une piste?
De mon coté je penche pour "la référence incorrecte sur la fonction callThisMethod de la méthode ThisMethod utilisé dans pour faire le removeEventListener"! Mais ou est Charlie? (la bonne référence!)
Merci beaucoup d'avance pour votre aide... Aucune idée n'est stupide alors hésité pas.