Maison >interface Web >js tutoriel >## Pourquoi mon « addEventListener » ne fonctionne-t-il pas dans Internet Explorer ?

## Pourquoi mon « addEventListener » ne fonctionne-t-il pas dans Internet Explorer ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 18:45:37345parcourir

##  Why Does My `addEventListener` Not Work in Internet Explorer?

L'énigme MSIE AddEventListener : capture d'événements et compatibilité entre navigateurs

Dans le domaine du développement Web, il est impératif de s'assurer que la gestion des événements est cohérent sur différents navigateurs. Cependant, des défis surviennent lorsque l'on tente d'écouter certains événements dans Internet Explorer (MSIE).

L'un de ces défis est l'incompatibilité de addEventListener lorsque l'on travaille avec MSIE. L'extrait de code que vous avez fourni, qui tente d'écouter l'événement de copie, rencontre une erreur en raison de ce problème.

La racine du problème : AttachEvent à la rescousse

Contrairement à d'autres navigateurs modernes, MSIE impose l'utilisation de attachEvent au lieu de addEventListener pour l'écoute des événements. Pour rectifier cet écart, vous devez remplacer le script tiers par son homologue plus convivial pour IE comme suit :

if (el.addEventListener) {
  el.addEventListener('copy', beforeCopy, false);
} else if (el.attachEvent) {
  el.attachEvent('oncopy', beforeCopy);
}

Points bonus : percer le mystère du troisième paramètre

Le troisième paramètre de addEventListener, useCapture, détermine si l'événement doit être capturé ou diffusé dans le DOM. Le définir sur false implique le bouillonnement, le comportement par défaut dans lequel l'événement est d'abord envoyé à l'élément le plus interne, puis se propage vers ses ancêtres.

Conseils supplémentaires de compatibilité entre navigateurs

Pour améliorer encore la compatibilité entre navigateurs, envisagez d'utiliser un polyfill pour résumer les nuances entre addEventListener et attachEvent ainsi que d'autres bizarreries spécifiques au navigateur. Les polyfills notables incluent :

  • [EventListener.js](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)
  • [ clouset.js](https://github.com/Clouset/Clouset)

En prenant en compte ces considérations spécifiques au navigateur et en mettant en œuvre les mesures de compatibilité entre navigateurs nécessaires, vous pouvez vous assurer que vos applications Web répondre de manière cohérente aux actions des utilisateurs, quel que soit le navigateur utilisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn