69 votes

la méthode addEventListener dans Internet Explorer

Quel est l'équivalent de l'Élément de l'Objet dans Internet Explorer 9?

if (!Element.prototype.addEventListener) {
    Element.prototype.addEventListener = function() { .. } 
} 

Comment ça fonctionne dans Internet Explorer?

Si il existe une fonction égale à addEventListener et je ne sais pas, expliquer s'il vous plaît.

Toute aide serait appréciée. N'hésitez pas à proposer d'une façon complètement différente de la résolution du problème.

148voto

user278064 Points 5193

addEventListener est la bonne DOM de la méthode à utiliser pour la fixation des gestionnaires d'événements.

Internet Explorer (version 8) a utilisé une autre attachEvent méthode.

Internet Explorer 9 prend en charge le bon addEventListener méthode.

Les éléments suivants doivent être une tentative d'écrire un cross-browser addEvent fonction.

function addEvent(evnt, elem, func) {
   if (elem.addEventListener)  // W3C DOM
      elem.addEventListener(evnt,func,false);
   else if (elem.attachEvent) { // IE DOM
      elem.attachEvent("on"+evnt, func);
   }
   else { // No much to do
      elem[evnt] = func;
   }
}

16voto

jchook Points 700

John Resig, auteur de les Secrets de l'JavaScript Ninja, a présenté sa version de croix-navigateur de mise en œuvre de l' addEvent et removeEvent de contourner les problèmes de compatibilité avec IE incorrecte ou inexistante addEventListener.

function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
}
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
  } else
    obj.removeEventListener( type, fn, false );
}

Source: http://ejohn.org/projects/flexible-javascript-events/

14voto

Teobaldo Points 1

Je suis l'aide de cette solution et travaille dans IE8 ou plus.

if (typeof Element.prototype.addEventListener === 'undefined') {
    Element.prototype.addEventListener = function (e, callback) {
      e = 'on' + e;
      return this.attachEvent(e, callback);
    };
  }

2voto

phtrivier Points 2711

Comme Delan a dit, vous voulez utiliser une combinaison de la méthode addEventListener pour les versions plus récentes, et attachEvent pour les plus âgés.

Vous trouverez plus d'informations sur les écouteurs d'événement sur MDN. (Remarque il y a quelques mises en garde avec la valeur de 'cette' dans votre auditeur).

Vous pouvez également utiliser un framework comme jQuery pour résumé la gestion des événements tout à fait.

$("#someelementid").bind("click", function (event) {
   // etc... $(this) is whetver caused the event
});

1voto

Delan Azabani Points 33013

addEventListener est pris en charge à partir de la version 9 ans; pour les versions plus anciennes, utilisez le peu similaire attachEvent fonction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X