@@ -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,17 @@ 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 ( ( ) => {
284
+ if ( this . _backdropElement ) {
285
+ this . _backdropElement . classList . add ( showingClass ) ;
286
+ }
287
+ } ) ;
283
288
} ) ;
284
- } ) ;
289
+ } else {
290
+ this . _backdropElement . classList . add ( showingClass ) ;
291
+ }
285
292
}
286
293
287
294
/**
0 commit comments