1 var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler) {
6 var e = Function._validateParams(arguments, [
7 {name: "element"},
8 {name: "eventName", type: String},
9 {name: "handler", type: Function}
10 ]);
11 if (e) throw e;
12 Sys.UI.DomEvent._ensureDomNode(element);
13 if (eventName === "error") throw Error.invalidOperation(Sys.Res.addHandlerCantBeUsedForError);
14 if (!element._events) {
15 element._events = {};
16 }
17 var eventCache = element._events[eventName];
18 if (!eventCache) {
19 element._events[eventName] = eventCache = [];
20 }
21 var browserHandler;
22 if (element.addEventListener) {
23 browserHandler = function(e) {
24 return handler.call(element, new Sys.UI.DomEvent(e));
25 }
26 element.addEventListener(eventName, browserHandler, false);
27 }
28 else if (element.attachEvent) {
29 browserHandler = function() {
30 var e = {};
31 try {e = Sys.UI.DomElement._getWindow(element).event} catch(ex) {}
32 return handler.call(element, new Sys.UI.DomEvent(e));
33 }
34 element.attachEvent('on' + eventName, browserHandler);
35 }
36 eventCache[eventCache.length] = {handler: handler, browserHandler: browserHandler};
37 }