blob: 769ad00c31a1ad8dcb0cd491821bff2ca45740c5 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001(function() {
2 var CustomEvents;
3
4 CustomEvents = {
5 bind: function(element, eventName, handler) {
6 if (element.addEventListener) {
7 return element.addEventListener(eventName, handler, false);
8 } else if (element.attachEvent) {
9 element[eventName] = 1;
10 return element.attachEvent('onpropertychange', function(event) {
11 if (event.propertyName === eventName) {
12 return handler();
13 }
14 });
15 } else {
16 throw new Error("Attempt to attach custom event " + eventName + " to something which isn't a DOMElement");
17 }
18 },
19 fire: function(element, eventName) {
20 var event;
21 if (element.addEventListener) {
22 event = document.createEvent('HTMLEvents');
23 event.initEvent(eventName, true, true);
24 return document.dispatchEvent(event);
25 } else if (element.attachEvent) {
26 if (element[eventName]) {
27 return element[eventName]++;
28 }
29 } else {
30 throw new Error("Attempt to fire custom event " + eventName + " on something which isn't a DOMElement");
31 }
32 }
33 };
34
35 exports.bind = CustomEvents.bind;
36
37 exports.fire = CustomEvents.fire;
38
39}).call(this);