1+ // Internet Explorer 9 and higher
12_CustomEventPolyfill ( ) ;
23
3- var TARGET = document ;
4- var EVENTS = { } ;
4+ const TARGET = document ;
5+ const EVENTS = { } ;
56
67/**
78 * @param {String } eventName
89 * @param {Object } detail
910 */
1011function _dispatchEvent ( eventName , detail ) {
11- var event = new CustomEvent ( eventName , {
12+ const event = new CustomEvent ( eventName , {
1213 detail : detail
1314 } ) ;
1415
@@ -21,7 +22,7 @@ function _CustomEventPolyfill() {
2122 }
2223
2324 function CustomEvent ( event , params ) {
24- var evt = document . createEvent ( 'CustomEvent' ) ;
25+ const evt = document . createEvent ( 'CustomEvent' ) ;
2526
2627 params = params || { bubbles : false , cancelable : false , detail : undefined } ;
2728 evt . initCustomEvent ( event , params . bubbles , params . cancelable , params . detail ) ;
@@ -39,15 +40,29 @@ module.exports = {
3940 * @param {Function } callback
4041 */
4142 on : function ( eventName , callback ) {
42- EVENTS [ eventName ] = callback ;
43+ if ( EVENTS [ eventName ] ) {
44+ EVENTS [ eventName ] . callbacks . push ( callback ) ;
45+ } else {
46+ EVENTS [ eventName ] = {
47+ callbacks : [ callback ]
48+ } ;
49+ }
50+
4351 TARGET . addEventListener ( eventName , callback ) ;
4452 } ,
4553
4654 /**
4755 * @param {String } eventName
4856 */
4957 off : function ( eventName ) {
50- TARGET . removeEventListener ( eventName , EVENTS [ eventName ] ) ;
58+ if ( ! EVENTS [ eventName ] ) {
59+ return ;
60+ }
61+
62+ EVENTS [ eventName ] . callbacks . forEach ( callback => {
63+ TARGET . removeEventListener ( eventName , callback ) ;
64+ } ) ;
65+
5166 delete EVENTS [ eventName ] ;
5267 } ,
5368
0 commit comments