Use*_*job 2 html angular angular8
鉴于:
<video poster="assets/videos/poster.png"
#videoPlayer
onloadedmetadata="this.muted = true">
<source src="assets/videos/video.mp4" type="video/mp4">
</video>
Run Code Online (Sandbox Code Playgroud)
在角度中:
...
public videoLoaded: boolean = false;
...
Run Code Online (Sandbox Code Playgroud)
如何绑定 videoLoaded 以在视频开始播放后进行更新?(或已加载)我在网上查看并看到一些较旧的 jquery 实现似乎无法在较新版本的 chrome 中工作,并且想知道如何实现此目的的最新方法
谢谢
您可以做的是使用 Angular 引用视频播放器本身ViewChild并检查它是否被单击。
@ViewChild('videoPlayer') videoPlayer: ElementRef;
videoClicked = false;
startVideo(): void {
this.videoClicked = true;
this.videoPlayer.nativeElement.play();
}
Run Code Online (Sandbox Code Playgroud)
该startVideo()方法将在 HTML 内部使用来触发更改。附加段落用于查看更改。
<video (click)="startVideo()" width="400"
#videoPlayer>
<source src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" type="video/mp4">
</video>
<p>Video clicked: {{videoClicked}}</p>
Run Code Online (Sandbox Code Playgroud)
编辑
更好的方法是使用HTMLMediaElement'sonplaying和loadeddataevent。请参阅 MDN 以获取有关 onplaying 的文档和有关loadeddata 的文档。在普通的 JavaScript 中,它看起来像这样:
const video = document.querySelector('video');
video.onplaying = (event) => {
console.log('Video is no longer paused.');
};
Run Code Online (Sandbox Code Playgroud)
在 Angular 中,需要进行一些小的更改。HTML 可以保持相当干净。
<video controls width="400"
#videoPlayer>
<source src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" type="video/mp4">
</video>
<p>Video loaded: {{dataLoaded}}</p>
<p>Video started: {{videoStarted}}</p>
Run Code Online (Sandbox Code Playgroud)
最大的变化是在组件中,ngAfterViewInit检查初始化视图后元素是否存在。loadeddata当媒体当前播放位置的帧完成加载(准备播放)时触发该事件。接下来,您可以访问元素的onplaying事件来检查视频是否未暂停。
@ViewChild('videoPlayer') videoPlayer: ElementRef;
dataLoaded = false;
videoStarted = false;
ngAfterViewInit() {
this.videoPlayer.nativeElement.onloadeddata = (event) => {
console.log('Video data is loaded.');
this.dataLoaded = true;
};
this.videoPlayer.nativeElement.onplaying = (event) => {
console.log('Video is no longer paused.');
this.videoStarted = true;
};
}
Run Code Online (Sandbox Code Playgroud)
这里有一个StackBlitz 例子来展示这个例子。
| 归档时间: |
|
| 查看次数: |
8429 次 |
| 最近记录: |