UNPKG

1.05 kBJavaScriptView Raw
1const CustomEvents = {
2 bind (element, eventName, handler) {
3 if (element.addEventListener) {
4 return element.addEventListener(eventName, handler, false);
5 }
6
7 if (element.attachEvent) {
8 element[eventName] = 1;
9
10 return element.attachEvent('onpropertychange', function (event) {
11 if (event.propertyName === eventName) {
12 return handler();
13 }
14 });
15 }
16
17 throw new Error(`Attempt to attach custom event ${eventName} to something which isn't a DOMElement`);
18 },
19 fire (element, eventName) {
20 if (element.addEventListener) {
21 const event = document.createEvent('HTMLEvents');
22
23 event.initEvent(eventName, true, true);
24
25 return document.dispatchEvent(event);
26 } else if (element.attachEvent) {
27 if (element[eventName]) {
28 return element[eventName]++;
29 }
30 } else {
31 throw new Error(`Attempt to fire custom event ${eventName} on something which isn't a DOMElement`);
32 }
33 }
34};
35
36exports.bind = CustomEvents.bind;
37exports.fire = CustomEvents.fire;