Hi guys -
This comes in really handy sometimes. Since standard compliant browsers do not have window.event I emulate it via a 1 line addition (line 16 below) to $addHandler. It comes in really convenient and virtually no overhead.
1
2 var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler) {
3 /// <param name="element" domElement="true"></param>
4 /// <param name="eventName" type="String"></param>
5 /// <param name="handler" type="Function"></param>
6 var e = Function._validateParams(arguments, [
7 {name: "element", domElement: true},
8 {name: "eventName", type: String},
9 {name: "handler", type: Function}
10 ]);
11 if (e) throw e;
12
13 if (element.addEventListener) {
14 if (!handler._browserHandler) {
15 handler._browserHandler = function handler$_browserHandler(e) {
16 if (e) window.event = e;
17 handler.call(element, new Sys.UI.DomEvent(e));
18 }
19 }
20 element.addEventListener(eventName, handler._browserHandler, false);
21 }
22 else if (element.attachEvent) {
23 if (!handler._browserHandler) {
24 handler._browserHandler = function handler$_browserHandler() {
25 handler.call(element, new Sys.UI.DomEvent(window.event));
26 }
27 }
28 element.attachEvent('on' + eventName, handler._browserHandler);
29 }
30 if (!element._events) {
31 element._events = {};
32 }
33 var eventCache = element._events[eventName];
34 if (!eventCache) {
35 element._events[eventName] = eventCache = [];
36 }
37 eventCache[eventCache.length] = handler;
38 }
39
40
Any chance of getting this included in AJAX? I hate hacking away at AJAX functions.