Kapitulieren Sie den DOM Level 0 Event-Handler und den Ereignishandler der DOM2-Ebene, IE-Ereignishandler in EventUtil-Objekte, um einen Cross-Browser-Effekt zu erzielen. Der Code ist wie folgt:
var eventUtil = {// Ereignishandle addEventHandler: Funktion (Element, Typ, Handler) {if (element.adDeventListener) {element.adDeVentListener (Typ, Handler, Falsch);} else if (attachEvent) {element.attachEvent ("on"+}; Ereignishandle REDEVENTHandler: Funktion (Element, Typ, Handler) {if (element.removeEventListener) {element.removeEventListener (Typ, Handler, Falsch);} else if (Element.DetAchEvent) {Element.DetACHEvent ("on"+Typ, Handler). getEvent:function (event) {return event?event:window.event;},// Get the type of event getType:function (event) {return event.type;},// Get the event object target getTarget:function (event) {if (event.target) {return event.target;}else{return event.srcElement;}},// Get the event object target getTarget:function (Ereignis) {if (event.target) {return event.target;} else {return event.srcelement;}}, // Erhalten Sie das Ereignisobjektziel GetTarget: Funktion (Ereignis) {if (Ereignis.Target) {return event.target;} else return Ereignis. (Ereignis.StopPropagation) {Ereignis.StopPropagation ();} else {Ereignis.CancelBubble = true;}}, // Ereignis -Standardverhalten PURTDEFAULT: Funktion (Ereignis) {if (Event.PrevventDefault) {Event.PreventDefault ();} {Ereignis {Ereignis {Ereignis {Event.Return.Beim Üben des Codes machte ich mehrere Fehler, was den Betriebsfehler verursachte. Nehmen Sie es auf und vertiefen Sie mein Gedächtnis.
① Hinzufügen eines Griffs ist der Ort, an dem der Parameter verschleiert wird: Erstens wird die Parameter von AddEventHandler (Element, Typ, Handler), die darstellen, welches Elementelement dem Ereignis, dem Typ des Ereignisses und der Ereignishandhabungsfunktionsfunktion hinzugefügt wird. Sie neigen dazu, die Positionen von Handler und Falsch zu verwirren (die die sprudelnde Stufe darstellen) im späteren AddEventLister (Typ, Handler, Falsch).
Dies führte zu dem Ergebnis: Während des Schreibprozesses dachte ich sorgfältig darüber nach und verstand, welche Parameter von AddEventHandler benötigt wurden, und dann wusste ich, welchen Parameter ich an welcher Position verwenden sollte. Schließlich habe ich es richtig geschrieben und keinen Fehler verursacht.
Lösung: Verstehen und erinnern Sie sich.
② Im IE -Ereignishandler -Urteilszweig werden AttachEvent und Absättcheab falsch geschrieben, und das Ereignis fehlt und nur angehängt oder detach wird geschrieben.
Ursache des Ergebnisses: Obwohl es keinen Fehler gibt, ist es unmöglich, Ereignisse in IE mit AddEventHandler und REMEVentHandler Ereignissen hinzuzufügen oder zu löschen.
Lösung: Übe einfach mehr und erinnere dich daran. Anhang und Ablösung.
③ Vergessen, den Parametern des IE -Event -Handlers AttachEvent und DistataDEvent "on" hinzuzufügen; Es ist als Anhang (Typ, Handler) geschrieben. Tatsächlich sollte der richtige Anhang ("on"+Typ, Handler) sein, und ich habe auch vergessen, dass es eine Beurteilung der Ereignisverarbeitung auf DOM0 -Ebene gibt.
Ursachen Ergebnis: In ähnlicher Weise ist die IE -Ereignisverarbeitung nicht kompatibel. Das Hinzufügen oder Löschen von Ereignissen mit eingekapselten Methoden zum IE kann nicht erfolgreich sein.
Lösung: Denken Sie nur daran. Eine andere Sache zu beachten: Element ["on"+Typ] wird in Ereignissen auf DOM0 -Ebene verwendet. Zum Beispiel entspricht Element ["on"+"Click"] Element.onclick.
④ Das letzte Attribut wird auch mit einem Komma am Ende hinzugefügt, z.
PREVENTDEFAULT: Funktion (Ereignis) {if (event.preventDefault) {event.preventDefault ();} else {Ereignis.ReturnValue = false;}}, // Die letzte Eigenschaft PURTDEFAULT wird mit einem Komma nach Abschluss hinzugefügt, ein Fehler wird auftreten}}Ursachen das Ergebnis: Ein Fehler wurde beim Laufen in IE gemeldet (wobei Zeile 54 von Event.js die nächste Zeile des letzten Kommas ist, die tatsächlich durch ein Komma verursacht wird; Zeile 10 von test.html wird aufgerufen
Lösung: Kein Zweifel, entfernen Sie einfach das letzte Komma.
⑤ Es ist immer noch ein Rechtschreibfehler. Die Eigenschaft CancelBubble in IE, die verhindert, dass Ereignisse aus dem Sprudel aufbaut werden, wurde mit einem weiteren S geschrieben, was als CancelBubbles geschrieben wird.
Ergebnis: Es wurde kein Fehler gemeldet, aber die Ereignisse im IE können nicht daran gehindert werden, zu sprudeln.
Lösung: Ändern Sie es zurück
Das obige ist das Fehlerproblem mit niedrigem Niveau, das JavaScript den DOM-Ereignishandler in Event.Js, das vom Editor eingeführt wurde, zusammenfasst. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!