¿Problema MSIE y addEventListener en Javascript?

Resuelto Matrym asked hace 15 años • 8 respuestas
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".

Matrym avatar Nov 08 '09 11:11 Matrym
Aceptado

En IE hay que utilizar attachEventen lugar del estándar addEventListener.

Una práctica común es verificar si el addEventListenermé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 addEventListeneres useCapture; si es verdadero, indica que el usuario desea iniciar la captura de eventos .

Christian C. Salvadó avatar Nov 08 '2009 04:11 Christian C. Salvadó

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í.

Aarif avatar Aug 19 '2014 15:08 Aarif

intenta agregar

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 

justo después de la etiqueta de apertura de la cabeza

130nk3r5 avatar Aug 19 '2014 07:08 130nk3r5