javascript anulando addEventListener y haciéndolo cruzado navegador
Frecuentes
Visto 4,349 veces
2
Ampliando la respuesta a esta pregunta Error al anular addEventListener de Element en Firefox
No quiero usar la función de envoltura/utilidad externa mencionada aquí. Implementación de funciones de navegador cruzado para agregar eventos de Javascript: use attachEvent / addEventListener vs eventos en línea
Objetivo: simplemente llamo a la función anulada addEventListener para mantener las cosas simples y debería manejar las diferencias entre navegadores dentro de sí mismo o por favor avise.
Edité el código, ¿cómo podemos lograr la funcionalidad de navegador cruzado dentro de esta solución?
(function() {
var interfaces = [ HTMLDivElement, HTMLImageElement /* ... (add as many as needed) */ ];
for (var i = 0; i < interfaces.length; i++) {
(function(original) {
interfaces[i].prototype.addEventListener = function(type, listener, useCapture) {
// DO SOMETHING HERE
if(element.attachEvent){ //IE
arguments[0] = 'on' + arguments[0];
return element.attachEvent.apply(this, arguments);
} else { //other browsers
return original.apply(this, arguments);
}
}
})(interfaces[i].prototype.addEventListener);
}
})();
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript overriding addeventlistener or haz tu propia pregunta.
No es una respuesta, pero no deberías hacer esto. Vea por qué en stackoverflow.com/questions/3826599/… - Dr.Molle
Stack Overflow no es un servicio de codificación. Si tienes un pregunta, no dude en hacer esa pregunta. Esto no es una pregunta. stackoverflow.com/faq - T.J. Crowder
Por separado, tenga en cuenta que usted podrá extender los prototipos de elementos DOM en IE. puedes extender elementos individuales, pero es increíblemente fácil tener una ruta de código en la que se olvide de extender uno y, por lo tanto, obtenga un error cuando intente usar
addEventListener
en eso. (Ves esto con la biblioteca Prototype todo el tiempo). Entonces, con el debido respeto, solo debes lidiar con el uso de un contenedor. - T.J. Crowdergracias por los comentarios, después de mirar el enlace del Dr. Molle, tiene sentido no hacerlo y, en cambio, adoptar el enfoque de envoltura. - user689751