@@ -39,7 +39,8 @@ export class OverlayRef implements PortalOutlet {
39
39
private _pane : HTMLElement ,
40
40
private _config : ImmutableObject < OverlayConfig > ,
41
41
private _ngZone : NgZone ,
42
- private _keyboardDispatcher : OverlayKeyboardDispatcher ) {
42
+ private _keyboardDispatcher : OverlayKeyboardDispatcher ,
43
+ private _document : Document ) {
43
44
44
45
if ( _config . scrollStrategy ) {
45
46
_config . scrollStrategy . attach ( this ) ;
@@ -259,7 +260,9 @@ export class OverlayRef implements PortalOutlet {
259
260
260
261
/** Attaches a backdrop for this overlay. */
261
262
private _attachBackdrop ( ) {
262
- this . _backdropElement = document . createElement ( 'div' ) ;
263
+ const showingClass = 'cdk-overlay-backdrop-showing' ;
264
+
265
+ this . _backdropElement = this . _document . createElement ( 'div' ) ;
263
266
this . _backdropElement . classList . add ( 'cdk-overlay-backdrop' ) ;
264
267
265
268
if ( this . _config . backdropClass ) {
@@ -275,13 +278,13 @@ export class OverlayRef implements PortalOutlet {
275
278
this . _backdropElement . addEventListener ( 'click' , ( ) => this . _backdropClick . next ( null ) ) ;
276
279
277
280
// Add class to fade-in the backdrop after one frame.
278
- this . _ngZone . runOutsideAngular ( ( ) => {
279
- requestAnimationFrame ( ( ) => {
280
- if ( this . _backdropElement ) {
281
- this . _backdropElement . classList . add ( 'cdk-overlay-backdrop-showing' ) ;
282
- }
281
+ if ( typeof requestAnimationFrame !== 'undefined' ) {
282
+ this . _ngZone . runOutsideAngular ( ( ) => {
283
+ requestAnimationFrame ( ( ) => this . _backdropElement ! . classList . add ( showingClass ) ) ;
283
284
} ) ;
284
- } ) ;
285
+ } else {
286
+ this . _backdropElement . classList . add ( showingClass ) ;
287
+ }
285
288
}
286
289
287
290
/**
0 commit comments