2012-05-17 32 views
5

Estoy a punto de actualizar mi código para usar addEventListener() simplemente escribiendo en la propiedad del elemento en javascript.¿Cómo actualizo a addEventListener?

Antes de hacer esto, quería verificar algunas cosas.

1.) Estoy asumiendo que no tengo que llamar a removeEventListener(), si actualizo el DOM y elimino los elementos (por .innerHTML write).

2.) addEventListener es compatible con los navegadores modernos populares - IE9, Chrome, Firefox, Safari

3.) No hay otras cuestiones que podrían arrise en los navegadores modernos.

Estoy pidiendo b.c. No quiero saltar el arma en la actualización de mi código.

Notas:

propiedad a las correlaciones de eventos (quitar el encendido).

  • onkeypress - Pulsación
  • onBlur -> desenfoque
  • onfocus -> centrarse

Investigación

https://developer.mozilla.org/en/DOM/element.addEventListener (Tiene tabla de compatibilidad)

http://www.quirksmode.org/js/events_advanced.html

relacionada

JavaScript listener, "keypress" doesn't detect backspace?

Notas

  • En lugar de devolver falsa. Utilice preventDefault() para evitar que los formularios se envíen al ingresar.
+0

sus suposiciones son correctas ... vaya por ello ... ¡por cierto, guarde una copia del archivo actual en caso de que no lo esté! –

+0

Muy bien ... si hay algún problema ... Los publicaré aquí. –

+0

@ CS_2013 Para 'addEventListener', se trata de presionar una tecla. Además, es posible que desee utilizar jQuery para hacer cosas entre navegadores. Debajo del capó se usa 'addEventListener' si es posible, puede recurrir a' attachEvent' para el IE antiguo y también normaliza el objeto del evento, para que no tenga que preocuparse por las diferencias. – kapa

Respuesta

3
  1. Usted no tiene que hacerlo. Si no almacena referencias al elemento DOM (en variables globales accidentales, por ejemplo), el recolector de basura debería limpiarlo.

  2. Ese es el soporte del navegador. Para IEs anteriores hay attachEvent() que hace casi lo mismo.

  3. Nada de lo que deba preocuparse. Este es el camino moderno por recorrer.

Nota: es posible que desee utilizar jQuery para hacer las cosas a través del navegador. Bajo el capó usa addEventListener si es posible, puede volver a caer en attachEvent para IE más antiguo y también normalizes your event object, por lo que no tiene que preocuparse por las diferencias. También es ideal para la manipulación DOM y el recorrido.

+0

No uso globales ... así que estoy bien allí. –

4

1) No es necesario llamar removeEventListener para el caso, pero que tendrá que llamar removeEventListener si se quita el elemento DOM unido a la eventListener a través de addEventListener, si se quita alguno de sus hijos que Don no es necesario eliminar nada

2) addEventListener es compatible con todos los principales navegadores

3) No hay otros temas en los navegadores modernos relacionados con addEventListener

4) onkeypress no es el nombre de un evento, sino un atributo, el evento el nombre es presionar tecla.Lo mismo para otros nombres en * por igual

un código rápido para evitar jQuery para la compatibilidad entre navegadores:

Element.prototype.on = function(evt, fn) { 
if (this.addEventListener) 
    this.addEventListener(evt, fn, false); 
else if (this.attachEvent) 
    this.attachEvent('on' + evt, fn); 
}; 

Element.prototype.off = function(evt, fn) { 
    if (this.removeEventListener) 
     this.removeEventListener(evt, fn, false); 
    else if (this.detachEvent) 
     this.detachEvent('on' + evt, fn); 
}; 
+0

buen código de limpieza ... si soporto navegadores más antiguos incluiré esto ... –

Cuestiones relacionadas