-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathEvents.js
39 lines (33 loc) · 1.17 KB
/
Events.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
/*
API:
AttachGeneralEvent(element, eventName, callback, initialize);
DetachGeneralEvent(element, eventName, callback, finalize);
*/
Packages.Define("Html.Events", ["Class"], function (__injection__) {
eval(__injection__);
function AttachGeneralEvent(element, eventName, callback, initialize) {
var fieldName = "gacjs_" + eventName + "Handlers";
var eventContainer = element[fieldName];
if (eventContainer === undefined) {
eventContainer = new __Event();
element[fieldName] = eventContainer;
initialize(eventContainer);
}
return eventContainer.Attach(callback);
}
function DetachGeneralEvent(element, eventName, handler, finalize) {
var fieldName = "gacjs_" + eventName + "Handlers";
var eventContainer = element[fieldName];
if (eventContainer !== undefined) {
eventContainer.Detach(handler);
if (eventContainer.IsEmpty()) {
finalize();
delete element[fieldName];
}
}
}
return {
AttachGeneralEvent: AttachGeneralEvent,
DetachGeneralEvent: DetachGeneralEvent,
}
});