1 | const 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 |
|
36 | exports.bind = CustomEvents.bind;
|
37 | exports.fire = CustomEvents.fire;
|