Если вы всегда добавляете и удаляете обработчики с помощью пользовательского метода, вы можете вести журнал их одним и тем же методом. Это добавляет некоторые накладные расходы для этого.
Например, вот часть, которая касается IE-
//Run=window.Run || {Shadow:{},nextid:0};
else if(window.attachEvent){
Run.handler= function(who, what, fun){
if(who.attachEvent){
who.attachEvent('on'+what, fun);
var hoo=who.id || who.tagName+(++Run.nextid);
if(!Run.Shadow[hoo])Run.Shadow[hoo]={};
if(!Run.Shadow[hoo][what])Run.Shadow[hoo][what]=[];
Run.Shadow[hoo][what].push(fun);
}
}
}