-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathEvent.js
66 lines (58 loc) · 1.86 KB
/
Event.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
* Unifies event handling across browsers
*
* - Allows registering and unregistering of event handlers
* - Injects event object and involved DOM element to listener
*
* @author Mark Rolich <[email protected]>
*/
var Event = function () {
"use strict";
this.attach = function (evtName, element, listener, capture) {
var evt = '',
useCapture = (capture === undefined) ? true : capture,
handler = null;
if (window.addEventListener === undefined) {
evt = 'on' + evtName;
handler = function (evt, listener) {
element.attachEvent(evt, listener);
return listener;
};
} else {
evt = evtName;
handler = function (evt, listener, useCapture) {
element.addEventListener(evt, listener, useCapture);
return listener;
};
}
return handler.apply(element, [evt, function (ev) {
var e = ev || event,
src = e.srcElement || e.target;
listener(e, src);
}, useCapture]);
};
this.detach = function (evtName, element, listener, capture) {
var evt = '',
useCapture = (capture === undefined) ? true : capture;
if (window.removeEventListener === undefined) {
evt = 'on' + evtName;
element.detachEvent(evt, listener);
} else {
evt = evtName;
element.removeEventListener(evt, listener, useCapture);
}
};
this.stop = function (evt) {
evt.cancelBubble = true;
if (evt.stopPropagation) {
evt.stopPropagation();
}
};
this.prevent = function (evt) {
if (evt.preventDefault) {
evt.preventDefault();
} else {
evt.returnValue = false;
}
};
};