Antes de entrar en los detalles de este problema, me gustaría aclarar la situación. Nuestra empresa de análisis web trabaja como consultora para sitios grandes, y (además de agregar una sola etiqueta SCRIPT) no tenemos control sobre las páginas.¿Manera segura, universal, de usar addEventHandler en Javascript?
Nuestra secuencia de comandos existente instala manejadores usando la forma "antigua" (una versión sofisticada de element.onclick = blah; que también ejecuta el controlador original) que desconoce por completo los manejadores "nuevos" (addEventListener o attachEvent) en la página. Nos gustaría solucionar esto para que nuestro script pueda ejecutarse en más sitios sin requerir tanto desarrollo personalizado.
El primer pensamiento aquí fue tener nuestro propio script use addEventListener/attachEvent, pero esto presenta un problema: del sitio del cliente establece un controlador utilizando la "vieja" manera, se borrará el controlador que instalamos el "nuevo " camino. Las pruebas rápidas y sucias muestran que esto sucede tanto en IE7 como en FF3, aunque no he probado toda la gama de navegadores. También existe el riesgo de que si usamos la "nueva" forma después de que los controladores de eventos de la página ya estén configurados, podamos borrar sus manejadores.
Así que mi pregunta es: ¿qué técnica segura puedo usar para agregar un controlador de eventos en Javascript usando addEventListener/attachEvent que funciona independientemente de cómo se instalen otros controladores de eventos en la página?
Recuerde: no tenemos forma de modificar el sitio en el que está instalado nuestro script. (Tengo que enfatizar que debido a que la respuesta predeterminada a preguntas como esta es siempre, "simplemente reescriba la página para hacer todo de la misma manera").
Y esto no es un problema en IE o cualquier otro navegador, porque si el comportamiento "adivinado" por la persona que pregunta fue en realidad, esto daría lugar a graves problemas para cualquier código del lado del cliente –
Argh, parece que tiene razón. Disculpas por la pregunta, obviamente el fallo fue un caso de prueba horrible y no hay errores específicos en el navegador.(Al menos IE7 y FF3.) Gracias por apuntarme en la dirección correcta. – blakeyrat