vue-video-player 点击进度条时,如果看过了就可以返回没看过继续播放不允许点击...
时间: 2023-06-25 18:06:39 浏览: 79
你可以在 Vue Video Player 组件中监听 `timeupdate` 事件,该事件会在视频播放位置发生变化时触发。在该事件中,可以判断当前视频播放位置是否超过了用户观看的位置,如果超过了就暂停视频播放,弹出提示框提示用户是否继续观看。如果用户选择继续观看,可以将视频的 `currentTime` 属性设置为用户观看位置,继续播放视频。
以下是一个简单的实现示例:
```vue
<template>
<div>
<video ref="video" @timeupdate="handleTimeUpdate"></video>
<div @click="handleClickProgress"></div>
</div>
</template>
<script>
export default {
data() {
return {
watchedTime: 0, // 用户观看的时间点
isPlaying: false // 是否正在播放视频
};
},
methods: {
handleTimeUpdate() {
const video = this.$refs.video;
if (this.isPlaying && video.currentTime > this.watchedTime) {
// 视频播放位置超过了用户观看位置,暂停视频播放
video.pause();
this.isPlaying = false;
// 弹出提示框,询问用户是否继续观看
const isContinue = confirm("是否继续观看?");
if (isContinue) {
// 用户选择继续观看,将视频播放位置设置为用户观看位置,继续播放视频
video.currentTime = this.watchedTime;
video.play();
this.isPlaying = true;
}
}
},
handleClickProgress() {
const video = this.$refs.video;
if (!this.isPlaying) {
// 视频未播放,无法跳转进度条
return;
}
// 获取用户点击的位置
const progress = document.querySelector(".progress");
const rect = progress.getBoundingClientRect();
const x = event.clientX - rect.left;
const percent = x / rect.width;
const currentTime = percent * video.duration;
if (currentTime < this.watchedTime) {
// 用户点击的位置在观看位置之前,无法跳转进度条
return;
}
// 跳转视频进度条
video.currentTime = currentTime;
}
}
};
</script>
```
在上述示例中,我们通过 `watchedTime` 变量来记录用户观看视频的位置,通过 `isPlaying` 变量来记录视频是否正在播放。在 `handleTimeUpdate` 方法中,我们监听视频播放位置变化事件,当视频播放位置超过了用户观看位置时,暂停视频播放并弹出提示框,询问用户是否继续观看。如果用户选择继续观看,我们将视频播放位置设置为用户观看位置,并继续播放视频。在 `handleClickProgress` 方法中,我们监听进度条的点击事件,根据用户点击的位置跳转视频进度条。注意,如果用户点击的位置在观看位置之前,则无法跳转进度条。
阅读全文