@@ -110,15 +110,18 @@ function patchEventTargetMethods(obj) {
110
110
} ) ( handler ) ;
111
111
} else {
112
112
fn = handler ;
113
- }
113
+ }
114
114
115
115
handler [ originalFnKey ] = fn ;
116
116
handler [ boundFnsKey ] = handler [ boundFnsKey ] || { } ;
117
117
handler [ boundFnsKey ] [ eventType ] = handler [ boundFnsKey ] [ eventType ] || zone . bind ( fn ) ;
118
118
arguments [ 1 ] = handler [ boundFnsKey ] [ eventType ] ;
119
119
}
120
120
121
- var target = isWebWorker ( ) && ! this ? self : this ;
121
+ // - Inside a Web Worker, `this` is undefined, the context is `global` (= `self`)
122
+ // - When `addEventListener` is called on the global context in strict mode, `this` is undefined
123
+ // see https://github.com/angular/zone.js/issues/190
124
+ var target = this || global ;
122
125
123
126
return global . zone . addEventListener . apply ( target , arguments ) ;
124
127
} ;
@@ -129,11 +132,15 @@ function patchEventTargetMethods(obj) {
129
132
var eventType = eventName + ( useCapturing ? '$capturing' : '$bubbling' ) ;
130
133
if ( handler [ boundFnsKey ] && handler [ boundFnsKey ] [ eventType ] ) {
131
134
var _bound = handler [ boundFnsKey ] ;
132
-
133
135
arguments [ 1 ] = _bound [ eventType ] ;
134
136
delete _bound [ eventType ] ;
135
137
}
136
- var target = isWebWorker ( ) && ! this ? self : this ;
138
+
139
+ // - Inside a Web Worker, `this` is undefined, the context is `global` (= `self`)
140
+ // - When `addEventListener` is called on the global context in strict mode, `this` is undefined
141
+ // see https://github.com/angular/zone.js/issues/190
142
+ var target = this || global ;
143
+
137
144
var result = global . zone . removeEventListener . apply ( target , arguments ) ;
138
145
global . zone . dequeueTask ( handler [ originalFnKey ] ) ;
139
146
return result ;
0 commit comments