Encapsulez le gestionnaire d'événements DOM Level 0 et le gestionnaire d'événements DOM2 du niveau d'événement IE dans les objets EventUtil pour atteindre l'effet cross-browser. Le code est le suivant:
var eventUtil = {// Ajouter la poignée de l'événement AddEventHandler: fonction (élément, type, gestionnaire) {if (element.addeventListener) {élément.addeventListener (type, manageur, false);} else if (element.attachevent) {element.attachevent ("on" + type, mannequin);} else {élément ["sur" + type] = manche; RemoveEventHandler: fonction (élément, type, gestionnaire) {if (element.reMoveEventListener) {element.reMoveEventListener (Type, Handler, false);} else if (element.detachevent) {element.detachevent ("sur" + type, handler);} else {element ["sur" + type] = null; {return event? Event: window.event;}, // Obtenez le type d'événement getType: fonction (événement) {return event.type;}, // obtenez l'objet de l'événement getTarget: function (event) {if (event.target) {return event.target;} else {return event.srcelement;}}, // obtenir l'objet événement GetTarget: Fonction) {if) (event.target) {return event.target;} else {return event.srcelement;}}, // Obtenez l'objet de l'événement cible getTarget: function (event) {if (event.target) {return event.target;} else {return event.srcelement;}}, // stop event bubblepropagation: function (event) {iff (if (event. {event.stoppropagation ();} else {event.cancelbubble = true;}}, // empêcher le comportement par défaut de l'événement empêchant default: function (event) {if (event.preventDefault) {event.preventDefault ();} else {event.reTurnValue = false;}}}Lors de la pratique du code, j'ai commis plusieurs erreurs, ce qui a provoqué l'erreur de fonctionnement. Enregistrez-le et approfondissez ma mémoire.
① L'ajout d'une poignée est l'emplacement où le paramètre est obscurci: Premièrement, les paramètres d'AddeventHandler (élément, type, gestionnaire) représentant respectivement quel élément d'élément est ajouté à l'événement, au type d'événement et au gestionnaire de fonctions de gestion de l'événement. Vous êtes enclin à confondre les positions de Handler et False (représentant l'étape bouillonnante) dans le dernier AddeventSister (Type, Handler, False).
Menant au résultat: Pendant le processus d'écriture, j'y ai pensé attentivement et compris les paramètres nécessaires à AddeventHandler, puis je savais quel paramètre utiliser à quelle position. Enfin, je l'ai écrit correctement et je n'ai pas provoqué d'erreur.
Solution: comprendre et rappeler.
② Dans la Direction du jugement des gestionnaires d'événements IE, Piévacte et Detachevent sont incorrectement orthographiés, et l'événement est manquant, et seul l'attachement ou le détachage est écrit.
Cause le résultat: bien qu'il n'y ait pas d'erreur, il est impossible d'ajouter ou de supprimer des événements dans IE à l'aide d'AddeventHandler et de SuppeverEventHandler.
Solution: pratiquez-vous plus et n'oubliez pas. attachEvent et Detachevent.
③ J'ai oublié d'ajouter "sur" aux paramètres du gestionnaire d'événements IE attachévent et détachevent; Il est écrit comme attachEvent (type, gestionnaire). En fait, le bon doit être attachée ("ON" + type, gestionnaire), et j'ai également oublié qu'il existe une branche de jugement pour le traitement des événements de niveau DOM0.
Cause Résultat: De même, le traitement des événements, c'est-à-dire n'est pas compatible. L'ajout ou la suppression d'événements à l'aide de méthodes encapsulées sur IE ne peut pas réussir.
Solution: N'oubliez pas seulement. Une autre chose à noter: l'élément ["ON" + type] est utilisé dans les événements de niveau DOM0. Par exemple, l'élément ["sur" + "cliquez"] équivaut à élément.onclick.
④ Le dernier attribut est également ajouté avec une virgule à la fin, comme le comportement par défaut d'Emptiserdefault lors du blocage de l'événement: ajoutez une virgule après l'achèvement, comme l'extrait de code suivant (commentaire)
preuveDefault: function (event) {if (event.PreventDefault) {event.PreventDefault ();} else {event.returnvalue = false;}}, // La dernière propriété empêcherdefault est ajoutée avec une virgule après avoir terminé, une erreur se produira}Provoque le résultat: une erreur a été signalée lors de l'exécution dans IE (où la ligne 54 de Event.js est la ligne suivante de la dernière virgule, qui est en fait causée par une virgule; la ligne 10 de Test.html est appelée parce que la méthode eventUtil.AddeventHandler dans Event.js est appelée)
Solution: Sans aucun doute, supprimez simplement la dernière virgule.
⑤ C'est toujours une erreur d'orthographe. La propriété Cancelbubble dans IE qui empêche les événements de bouillonner a été écrite avec un autre S, qui est écrit comme Cancelbubbles.
Résultat: aucune erreur n'a été signalée, mais les événements dans IE ne peuvent pas être empêchés de bouillonner.
Solution: changez-le
Ce qui précède est le problème d'erreur de bas niveau que JavaScript résume le gestionnaire d'événements DOM dans event.js introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!