@@ -154,50 +154,37 @@ export class DomEventsPlugin extends EventManagerPlugin {
154154 let callback : EventListener = handler as EventListener ;
155155 // if zonejs is loaded and current zone is not ngZone
156156 // we keep Zone.current on target for later restoration.
157- if ( zoneJsLoaded ) {
158- if ( ! NgZone . isInAngularZone ( ) || isBlackListedEvent ( eventName ) ) {
159- let symbolName = symbolNames [ eventName ] ;
160- if ( ! symbolName ) {
161- symbolName = symbolNames [ eventName ] = __symbol__ ( ANGULAR + eventName + FALSE ) ;
162- }
163- let taskDatas : TaskData [ ] = ( element as any ) [ symbolName ] ;
164- const globalListenerRegistered = taskDatas && taskDatas . length > 0 ;
165- if ( ! taskDatas ) {
166- taskDatas = ( element as any ) [ symbolName ] = [ ] ;
167- }
157+ if ( zoneJsLoaded && ( ! NgZone . isInAngularZone ( ) || isBlackListedEvent ( eventName ) ) ) {
158+ let symbolName = symbolNames [ eventName ] ;
159+ if ( ! symbolName ) {
160+ symbolName = symbolNames [ eventName ] = __symbol__ ( ANGULAR + eventName + FALSE ) ;
161+ }
162+ let taskDatas : TaskData [ ] = ( element as any ) [ symbolName ] ;
163+ const globalListenerRegistered = taskDatas && taskDatas . length > 0 ;
164+ if ( ! taskDatas ) {
165+ taskDatas = ( element as any ) [ symbolName ] = [ ] ;
166+ }
168167
169- const zone = isBlackListedEvent ( eventName ) ? Zone . root : Zone . current ;
170- if ( taskDatas . length === 0 ) {
171- taskDatas . push ( { zone : zone , handler : callback } ) ;
172- } else {
173- let callbackRegistered = false ;
174- for ( let i = 0 ; i < taskDatas . length ; i ++ ) {
175- if ( taskDatas [ i ] . handler === callback ) {
176- callbackRegistered = true ;
177- break ;
178- }
179- }
180- if ( ! callbackRegistered ) {
181- taskDatas . push ( { zone : zone , handler : callback } ) ;
168+ const zone = isBlackListedEvent ( eventName ) ? Zone . root : Zone . current ;
169+ if ( taskDatas . length === 0 ) {
170+ taskDatas . push ( { zone : zone , handler : callback } ) ;
171+ } else {
172+ let callbackRegistered = false ;
173+ for ( let i = 0 ; i < taskDatas . length ; i ++ ) {
174+ if ( taskDatas [ i ] . handler === callback ) {
175+ callbackRegistered = true ;
176+ break ;
182177 }
183178 }
184-
185- if ( ! globalListenerRegistered ) {
186- element [ ADD_EVENT_LISTENER ] ( eventName , globalListener , false ) ;
179+ if ( ! callbackRegistered ) {
180+ taskDatas . push ( { zone : zone , handler : callback } ) ;
187181 }
188- } else {
189- // if zone.js loaded and we are in angular zone, we don't need to
190- // use zone.js patched addEventListener
191- const wrappedCallback = function ( ) {
192- return self . ngZone . run ( callback , this , arguments as any ) ;
193- } ;
194- zoneJsLoaded . apply ( element , [ eventName , wrappedCallback , false ] ) ;
195- // we just use the underlying removeEventListener
196- return ( ) => element [ REMOVE_EVENT_LISTENER ] . apply (
197- element , [ eventName , wrappedCallback , false ] ) ;
182+ }
183+
184+ if ( ! globalListenerRegistered ) {
185+ element [ ADD_EVENT_LISTENER ] ( eventName , globalListener , false ) ;
198186 }
199187 } else {
200- // use zone.js patched addEventListener or native addEventListener if zone.js not loaded
201188 element [ NATIVE_ADD_LISTENER ] ( eventName , callback , false ) ;
202189 }
203190 return ( ) => this . removeEventListener ( element , eventName , callback ) ;
@@ -209,8 +196,6 @@ export class DomEventsPlugin extends EventManagerPlugin {
209196 if ( ! underlyingRemove ) {
210197 return target [ NATIVE_REMOVE_LISTENER ] . apply ( target , [ eventName , callback , false ] ) ;
211198 }
212-
213- // if zone.js loaded and wrappedCallback not exists, the callback was added in different zone
214199 let symbolName = symbolNames [ eventName ] ;
215200 let taskDatas : TaskData [ ] = symbolName && target [ symbolName ] ;
216201 if ( ! taskDatas ) {
0 commit comments