He creado una casilla de verificación de forma dinámica. Solía addEventListenerllamar a una función al hacer clic en la casilla de verificación, que funciona en Google Chrome y Firefox pero no en Internet Explorer 8 . Este es mi codigo:
var _checkbox = document.createElement("input");
_checkbox.addEventListener("click", setCheckedValues, false);
setCheckedValues es mi controlador de eventos.

Tienes que usarlo
attachEventen versiones de IE anteriores a IE9. Detecta siaddEventListenerestá definido y usaattachEventsi no lo está:Tenga en cuenta que IE11 eliminará
attachEvent.Ver también:
element.addEventListenerInternet Explorer heredado y attachEventfuente
Esta también es una solución simple para navegadores cruzados:
En lugar de 'clic' puede ser cualquier evento, por supuesto.
fuente
addEventListenerEl tercer argumento es opcional de todos modos, por lo que esta puede ser una buena solución, y es mejor que las ramas if-else. Pero en este caso,_checkboxes el elemento objetivo, nowindow. :) Entonces, tal vez podría crear una función donde el objetivo del evento sea otro argumento.addEventListenerllamadas de los elementos de destino del evento ; consulte este tema: stackoverflow.com/questions/1007340/… . Entonces, para elwindowobjeto, funciona correctamente, pero no para otros nodos dentro del documento. De esta manera, el alias que sugiere NO es correcto para el caso mencionado en la pregunta original. ¿Cuál sería su solución?IE no es compatible
addEventListenerhasta la versión 9, por lo que debe usarattachEvent, aquí hay un ejemplo:fuente
Puede que sea más fácil (y tenga más rendimiento) si delega el manejo de eventos a otro elemento, por ejemplo, su tabla
de esta manera, solo tendrá un controlador de eventos, y esto también funcionará para los elementos recién agregados. Esto requiere jQuery> = 1.7
De lo contrario, use delegate ()
fuente
Puede usar la función addEvent () a continuación para agregar eventos para la mayoría de las cosas, pero tenga en cuenta que para XMLHttpRequest
if (el.attachEvent)fallará en IE8, porque no es compatible,XMLHttpRequest.attachEvent()por lo que debe usarXMLHttpRequest.onload = function() {}en su lugar.fuente
Opté por un Polyfill rápido basado en las respuestas anteriores:
Por supuesto, al igual que las respuestas anteriores, esto no garantiza que
window.attachEventexista, lo que puede ser un problema o no.fuente
Si usa jQuery puede escribir:
fuente
fuente