¿Problema MSIE y addEventListener en Javascript?
document.getElementById('container').addEventListener('copy',beforecopy,false );
En Chrome/Safari, lo anterior ejecutará la función "antes de copiar" cuando se copie el contenido de la página. Se supone que MSIE también admite esta funcionalidad, pero por alguna razón recibo este error:
"El objeto no admite esta propiedad o método"
Ahora, tengo entendido que Internet Explorer no funcionará con el nodo del cuerpo, pero habría pensado que proporcionar un nodo por ID funcionaría bien. ¿Alguien tiene alguna idea sobre lo que estoy haciendo mal?
** Puntos de bonificación para cualquiera que pueda decirme para qué sirve el tercer parámetro "Falso".
En IE hay que utilizar attachEvent
en lugar del estándar addEventListener
.
Una práctica común es verificar si el addEventListener
método está disponible y usarlo; de lo contrario, use attachEvent
:
if (el.addEventListener){
el.addEventListener('click', modifyText, false);
} else if (el.attachEvent){
el.attachEvent('onclick', modifyText);
}
Puedes hacer una función para hacerlo:
function bindEvent(el, eventName, eventHandler) {
if (el.addEventListener){
el.addEventListener(eventName, eventHandler, false);
} else if (el.attachEvent){
el.attachEvent('on'+eventName, eventHandler);
}
}
// ...
bindEvent(document.getElementById('myElement'), 'click', function () {
alert('element clicked');
});
Puede ejecutar un ejemplo del código anterior aquí .
El tercer argumento de addEventListener
es useCapture
; si es verdadero, indica que el usuario desea iniciar la captura de eventos .
En caso de que esté utilizando JQuery 2.x, agregue lo siguiente en el
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge;" />
</head>
<body>
...
</body>
</html>
Esto funcionó para mí.
intenta agregar
<meta http-equiv="X-UA-Compatible" content="IE=edge">
justo después de la etiqueta de apertura de la cabeza