2017-10-15 43 views
0

我已经实现可见性API的角度成分类似于本在Angular中使用可见性API?

constructor() { 
    var hidden, state, visibilityChange; 
    if (typeof document.hidden !== "undefined") { 
     hidden = "hidden"; 
     visibilityChange = "visibilitychange"; 
     state = "visibilityState"; 
    } 

    document.addEventListener(visibilityChange, function() { 
     if(status == hidden){ 
      console.log("Hidden"); 
     } 
     else if(status != hidden){ 
      console.log("Visible"); 
     } 
    }, false); 
} 

pauseVideo(){ 
    //Video pause code 
} 

我需要暂停视频,即打电话的时候的能见度变化隐藏在pauseVideo()方法的构造,我该怎么做这里面?

+0

你可以用'如果(document.hidden){',看看是否该文件是可见或不可见。 – HMR

+0

我确实使用过'if(document.hidden)',但该方法无法在文档事件侦听器内部访问,我搜索了更多,并且答案是在发生这种情况时使用服务来广播事件;有关它的任何想法? – Nithin

回答

1

我不知道为什么你说document.hidden的事件监听器不工作,因为它工作得很好,对我来说:

document.addEventListener(
    "visibilitychange" 
    ,() => { 
    if (document.hidden) { 
     console.log("document is hidden"); 
    }else{ 
     console.log("document is showing"); 
    } 
    } 
); 

如果您各种各样的错误可能打开开发者工具(F12 )并检查控制台?也许打破了错误,看看有什么不对?

+1

嘿,谢谢你的代码。这工作。 – Nithin

1

如果您使用Angular 4+,则可以使用Module angular-page-visibility(https://www.npmjs.com/package/angular-page-visibility)。

这里是一个组件类的例子:

@Component({ 
    selector : 'app-root', 
    templateUrl : './app.component.html', 
    styleUrls : [ './app.component.scss' ] 
}) 
export class AppComponent implements OnDestroy, OnInit { 
    title = 'app'; 

    constructor() { 
    } 

    ngOnInit(): void { 
    } 

    @OnPageVisible() 
    logWhenPageVisible(): void { 
     console.log('OnPageVisible'); 
     console.log('visible'); 
    } 

    @OnPageHidden() 
    logWhenPageHidden(): void { 
     console.log('OnPageHidden'); 
     console.log('hidden'); 
    } 

    @OnPageVisibilityChange() 
    logWhenPageVisibilityChange(isPageVisible: boolean): void { 
     console.log('OnPageVisibilityChange'); 
     if (isPageVisible) { 
      console.log('visible'); 
     } else { 
      console.log('hidden'); 
     } 
    } 

    ngOnDestroy(): void { 
    } 
}