/** * Cross-browser event processing tool. Only bubbles are supported. Capture not supported * @author ([email protected]) */var eventutil = {Getevent:function (event) {return Event | | windo W.event; }, Gettarget:function (event) {return Event.target | | event.srcelement; },//Return registered successful listener, ie need to use return value to remove listener on:function (Elem, type, handler) {if (Elem.addeventlistener) { Elem.addeventlistener (type, handler, false); return handler; } else if (elem.attachevent) {var wrapper = function () {var event = window.event; Event.target = event.srcelement; Handler.call (Elem, event); }; Elem.attachevent (' on ' + type, wrapper); return wrapper; }}, Off:function (Elem, type, handler) {if (Elem.removeeventlistener) {Elem.removeeventlistene R (Type, Handler, false); } else if (elem.detachevent) {elem.detachevent (' on ' + type, handler); }}, PreveNtdefault:function (Event) {if (Event.preventdefault) {event.preventdefault (); } else if (' returnvalue ' in event) {Event.returnvalue = false; }}, Stoppropagation:function (event) {if (event.stoppropagation) {event.stoppropagation (); } else if (' cancelbubble ' in event) {event.cancelbubble = true; }},/** * keypress events get input characters across browsers * Some browsers also trigger keypress on some special keys, which returns null **/getchar:function (event) { if (Event.which = = null) {return string.fromcharcode (Event.keycode); IE} else if (Event.which! = 0 && Event.charcode! = 0) {return String.fromCharCode (EV Ent.which); The rest} else {return null; Special Key}};
Reference:
What is the DOM event model, writing a Eventutil tool class to implement event management compatibility
JavaScript cross-browser event processing tool