La llamada al IE attachEvent devuelve true, pero el controlador muestra “nulo”

Tengo una página ASP.NET bastante simple que representa una entrada HTML (cuadro de texto). Dentro del HTML generado, adjunto un controlador a varios eventos, incluidos onfocus, onkeypress y onkeyup. Debido a que esta es una solución dirigida a una versión de IE que no admite addEventListener (situación sobre la que no puedo hacer nada), me veo obligado a utilizar attachEvent.

Una llamada típica a attachEvent es la siguiente: he extraído esta fuente del original por razones de brevedad / claridad, por lo que no es precisamente el código en cuestión:

var hostControl = document.getElementById('mytextbox'); var attachResult = hostControl.attachEvent('onfocus', function(){ hostControl.select(); }); if (!attachResult) { alert('Attach failed.'); } attachResult = hostControl.attachEvent('onblur', function(){ if (hostControl.value=='') { alert('Warning - no entry.'); } }); if (!attachResult) { alert('Attach failed.'); } 

Cuando paso por este código en el depurador de IE, attachEvent devuelve ‘verdadero’ en ambas instancias, lo que debería indicar que el bash de adjuntar el evento fue exitoso. Sin embargo, cuando miro los controladores [Event] para el control dentro del depurador, todos los eventos muestran ‘null’, no hay controlador asociado.

Cosas que he probado / investigado:

  • He leído varios artículos diferentes sobre los caprichos del archivo adjunto al evento en IE, así que he evitado engañosamente cualquier referencia a ‘esto’.
  • Intenté una versión que usó uno de los bloques contenedores addEvent que intenta usar addEventListener si está disponible, aunque sabía que esto sería una solución de IE.

Cuando probé esa versión contra FireFox, el archivo adjunto del evento funcionó correctamente a través de addEventListener, pero falló en IE usando attachEvent (con attachEvent aún devolviendo true).

  • Luego opté por eliminar cualquier posible problema que la envoltura pudiera estar presentando y usé attachEvent directamente contra el control, lo cual me lleva a donde estoy ahora. El problema persiste.

Me gustaría pensar que simplemente he pasado por alto algo muy simple, ya que he conectado eventos antes sin dificultad, pero algo aquí me está lanzando una bola curva que simplemente no reconozco. Aprecio los ojos extra en esto para ver dónde me he equivocado.

Intereting Posts