@@ -39,7 +39,8 @@ export class OverlayRef implements PortalOutlet {
3939 private _pane : HTMLElement ,
4040 private _config : ImmutableObject < OverlayConfig > ,
4141 private _ngZone : NgZone ,
42- private _keyboardDispatcher : OverlayKeyboardDispatcher ) {
42+ private _keyboardDispatcher : OverlayKeyboardDispatcher ,
43+ private _document : Document ) {
4344
4445 if ( _config . scrollStrategy ) {
4546 _config . scrollStrategy . attach ( this ) ;
@@ -259,7 +260,9 @@ export class OverlayRef implements PortalOutlet {
259260
260261 /** Attaches a backdrop for this overlay. */
261262 private _attachBackdrop ( ) {
262- this . _backdropElement = document . createElement ( 'div' ) ;
263+ const showingClass = 'cdk-overlay-backdrop-showing' ;
264+
265+ this . _backdropElement = this . _document . createElement ( 'div' ) ;
263266 this . _backdropElement . classList . add ( 'cdk-overlay-backdrop' ) ;
264267
265268 if ( this . _config . backdropClass ) {
@@ -275,13 +278,17 @@ export class OverlayRef implements PortalOutlet {
275278 this . _backdropElement . addEventListener ( 'click' , ( ) => this . _backdropClick . next ( null ) ) ;
276279
277280 // 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+ } ) ;
283288 } ) ;
284- } ) ;
289+ } else {
290+ this . _backdropElement . classList . add ( showingClass ) ;
291+ }
285292 }
286293
287294 /**
0 commit comments