ajouter un évènement.ID = 1; // compteur d''événements

  addEvent fonction (obj, type, fn) {

  si (obj.addEventListener) {

  obj.addEventListener (type, fn, false);

  } Else {// IE

  // déterminer si l''objet existe, assurez-vous qu''un seul objet, sinon chaque fois, il crée un objet événement

  // pour un tableau de paires de valeurs de clé mémorisées dans la forme et la fonction du type, événement ======= va monter un tableau d''objets pour l''objet obj

  Supprimer un événement pratique

  si ( !obj.événements) {

  // structure équivalente: obj.événements: {clic: [FN1, Fn2], mouserover: [fn1], .}

  obj.événements = {};

  }

  var drapeau = false;

  // magasin objet événement

  si ( !obj.événements [type]) {

  // fonction, un par un type de stockage de données

  obj.événements [type] = [];

  // Le premier type d''événement et la fonction du type de stockage pour le premier type de réseau

  obj.événements [type] [0] = fn;

  } Autre {

  var un événementfn = obj.événements [type];

  // boucle à travers ce type de requête d''objet si l''événement est répétée, si le drapeau de répétition est vrai, et le retour à un retour

  for (var i dans un événementfn) {

  si (eventfn [i] == fn) {

  Flag = true;

  revenir;

  }

  }

  // déterminer si la répétition d''événements, répétition, alors il y aurait une fonction de l''événement de stockage, sinon l''événement est stocké et exécuté

  si ( !drapeau) {

  // Lorsque ce type existe déjà, le temps cumulé sera fonction du type de stockage pour l''événement, la dernière exécution du cycle

  eventfn [addEvent.ID ++] = fn;

  }

  }

  // fonction tableau type d''événement appels de fonction traversal

  obj [ "sur" + type] = function () {

  événement var = fenêtre.événement; // stockage d''objets d''événement

  // fonctions d''objet ajouter après l''événement, lorsque l''appel est exécuté, le comportement par défaut et prévenir l''apparition de synchronisation avec les normes du W3C

  event.preventDefault = function () {

  cette.returnValue = false;

  };

  // ajouter la fonction derrière l''objet événement, une fonction de queue, arrêt bouillonnement.

  event.stopPropagation = function () {

  cette.cancelBubble = true;

  };

  // Boucle dans l''exécution d''une pluralité de fonctions de type stockée

  var evfn = obj.événements [type];

  for (var i dans evfn) {

  // Pour effectuer ce type de fonction d''événement pour résoudre le problème dans l''ordre inverse couvrant les événements traditionnels et modernes événement déclenchant la liaison

  événements Problème

  evfn [i].appel (ce qui, événement); // fonction à exécuter est placé dans l''environnement d''exécution de l''objet, et de transmettre un événement

  Comme d''utiliser la fonction de rappel

  }

  }

  }

  }

  removeEvent fonction (obj, type, fn) {

  si (obj.removeEventListener) {

  obj.removeEventListener (type, fn, false);

  } Autre {

  // Boucle si vous supprimez la fonction d''événement du type de fonction d''événement est une fonction de la fonction, sous l''objet

  var evefn = obj.événements [type];

  for (var i dans evefn) {

  si (evefn [i] == fn) {

  // suppression evefn [i], la méthode peut également supprimer l''élément du tableau, mais conservera la position lorsque le temps d''accès à la valeur

  est non défini

  evefn.épissure (i, 1); // supprimer à partir d''un i-ième position,

  }

  }

  }

  }

événements traditionnels et modernes événements javascript

Recommend Article: