He creado una casilla de verificación de forma dinámica. Solía addEventListener
llamar 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
attachEvent
en versiones de IE anteriores a IE9. Detecta siaddEventListener
está definido y usaattachEvent
si no lo está:Tenga en cuenta que IE11 eliminará
attachEvent
.Ver también:
element.addEventListener
Internet 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
addEventListener
El 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,_checkbox
es el elemento objetivo, nowindow
. :) Entonces, tal vez podría crear una función donde el objetivo del evento sea otro argumento.addEventListener
llamadas de los elementos de destino del evento ; consulte este tema: stackoverflow.com/questions/1007340/… . Entonces, para elwindow
objeto, 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
addEventListener
hasta 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.attachEvent
exista, lo que puede ser un problema o no.fuente
Si usa jQuery puede escribir:
fuente
fuente