Salut à tous!
J'était bien content de ma fonction addEvent :
Jusqu'à ce que Julien Royer me parle du problème de fuite de mémoire
.
Comme j'utilise cette fonction de partout c'est plutôt gênant.
Aprés la lecture de ce document j'ai trouvé la solution suivante :
J'ai comparé avec d'autre solutions types "ramasses miettes" qui crée un tableau des événements pour les détacher ensuite, mais je trouve celle ci plus simple, car il n'y besoin ni de stocker ni d'appeler une autre fonction.
Est ce que ce code est bon?
Il y a t'il des solutions plus simple en pouvant garder la fonction addEvent avec les mêmes propriétés (passage du this et d'un paramètre optionnel)?
Modifié par matmat (01 Jul 2008 - 03:24)
J'était bien content de ma fonction addEvent :
function addEvent(obj, type, fn, par){
if(obj.addEventListener){
obj.addEventListener(type, function(event){
return fn.call(obj, event, par);
}, false );
}else if(obj.attachEvent){
obj.attachEvent("on"+type, function(e){
if (!e) var e = window.event;
return fn.call(obj, e, par);
});
}
};
Jusqu'à ce que Julien Royer me parle du problème de fuite de mémoire

Comme j'utilise cette fonction de partout c'est plutôt gênant.
Aprés la lecture de ce document j'ai trouvé la solution suivante :
function addEvent(obj, type, fn, par){
if(obj.addEventListener){
obj.addEventListener(type, function(event){
return fn.call(obj, event, par);
}, false );
}else if(obj.attachEvent){
var ieHandler = function(e){
if (!e) var e = window.event;
return fn.call(obj, e, par);
};
obj.attachEvent("on"+type, ieHandler);
window.attachEvent("onunload",cleanMemory);
function cleanMemory(){
obj.detachEvent("onclick",ieHandler);
window.detachEvent("onunload",cleanMemory);
obj = null;
}
}
};
J'ai comparé avec d'autre solutions types "ramasses miettes" qui crée un tableau des événements pour les détacher ensuite, mais je trouve celle ci plus simple, car il n'y besoin ni de stocker ni d'appeler une autre fonction.
Est ce que ce code est bon?
Il y a t'il des solutions plus simple en pouvant garder la fonction addEvent avec les mêmes propriétés (passage du this et d'un paramètre optionnel)?
Modifié par matmat (01 Jul 2008 - 03:24)