Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: patilanz en 30 Diciembre 2015, 15:42 pm



Título: Sobrescribir addEventListener en todos los objetos
Publicado por: patilanz en 30 Diciembre 2015, 15:42 pm
Hola quiero sobrescribir addEventListener en todos los objetos de modo que no tenga que llamar a AttachEvent por separado:
Código
  1. addEventListener = function(){
  2.    if(this.attachEvent){return this.attachEvent('on' + arguments[0]);}
  3.    return Object.getPrototypeOf(this).addEventListener.apply(this,arguments);
  4. }

Esto seguramente no funcione y si funciona solo reemplazara el addEventListener de window.

Alguna idea?

Un saludo

@Edit: Ya se que puedo crear una función aparte y pasar como primer parámetro el objeto pero no es lo que quiero hacer.


Título: Re: Sobrescribir addEventListener en todos los objetos
Publicado por: BlackM4ster en 30 Diciembre 2015, 23:34 pm
Prueba sobreescribiendo el prototipo de la funcion en caso de que no esté disponible:
Código
  1. (function(){
  2.    if (!window.addEventListener) {
  3.        var addEventListener = function(type, handler) {
  4.            var that = this;
  5.            this.attachEvent('on' + type.toLowerCase(), function(){
  6.                handler.call(that, window.event);
  7.            });
  8.        }
  9.        Window.prototype.addEventListener = addEventListener;
  10.        HTMLDocument.prototype.addEventListener = addEventListener;
  11.        Element.prototype.addEventListener = addEventListener;
  12.    }
  13. })();


Título: Re: Sobrescribir addEventListener en todos los objetos
Publicado por: patilanz en 1 Enero 2016, 16:40 pm
En IE8 cuando intenta llamar al handler con call devuelve este error: El objeto no acepta esta acción