Foros del Web » Programando para Internet » Javascript » Frameworks JS »

[Aporte] Detectar todos los EventListeners

Estas en el tema de [Aporte] Detectar todos los EventListeners en el foro de Frameworks JS en Foros del Web. Esto es javascript algo avanzado; asi que su utilidad es solo para los que andan metidos en el asunto y a veces tienen problemas algo ...
  #1 (permalink)  
Antiguo 21/06/2011, 23:03
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
[Aporte] Detectar todos los EventListeners

Esto es javascript algo avanzado; asi que su utilidad es solo para los que andan metidos en el asunto y a veces tienen problemas algo complejos.

------------------

Hoy me encontraba trabajando en un código ofuscado/comprimido... en otras palabras: un código que no se entiende en absoluto y es larguisimo.

En una parte me di cuenta que tenia que ver todos los listeners (con su respectivos eventos y metodos) para poder disparar correctamente una funcion que la cual ni sabia el nombre... entonces me puse a buscar como se podria hacer por Internet, e incluso en stackoverflow decian que no era posible (al menos sin un framewok que llevara cuenas) pero despues de hecharle cabeza me sospeche que si era posible modificando el prototipo del los elementos html... asi que salio esto:


Cita:
function reportIn(e){
var a = this.lastListenerInfo[this.lastListenerInfo.length-1];
console.log(a)
}

HTMLAnchorElement.prototype.realAddEventListener = HTMLAnchorElement.prototype.addEventListener;

HTMLAnchorElement.prototype.addEventListener = function(a,b,c){
this.realAddEventListener(a,reportIn,c);
this.realAddEventListener(a,b,c);
if(!this.lastListenerInfo){ this.lastListenerInfo = new Array()};
this.lastListenerInfo.push({a : a, b : b , c : c});
};

;
Despues de insertar este pedaso de codigo antes que cualquier otro codigo puede inspeccionar todos los eventos de cualquier anchor (<a>) por que tienen una propiedad llamada lastListenerInfo que contiene todos los listeners que cada uno tiene asignado.

Igualmente en la función reportIn() se puede insertar cualquier código que se quiera ejecutar cuando alguno de los eventListeners es disparado.

Otra ventaja que se puede aprovechar es que hace posible borrar listeners con funciones anonimas.

Etiquetas: addeventlistener, javascript, prototype
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:12.