Vue 3 watch 怎么监听音视频播放进度同步进度条

老瑶吖_2602

老瑶吖_2602

2026-10-21

960人浏览

原创

vue 3 中用 watch 监听音视频进度需分离驱动源与响应目标:以 video.currenttime 为唯一可信源,进度条只读不写;拖拽时暂停监听,seeked 后恢复;结合 duration 计算百分比并防 nan;失焦或暂停时抑制更新。

vue 3 watch 怎么监听音视频播放进度同步进度条

用 Vue 3 的 watch 监听音视频播放进度并同步进度条,关键在于**分离“驱动源”和“响应目标”**:播放器 DOM 的 currentTime 是唯一可信源,进度条只读取、不反向控制;同时要规避拖拽与自动播放之间的数据冲突。

监听 video.currentTime 变化并更新进度条值

进度条(如 <input type="range">)应绑定一个响应式变量(如 progressValue),但这个变量不能靠双向绑定(v-model)直接连 video.currentTime,否则会形成干扰闭环。

  • 在 onMounted 后获取 videoRef,确保 DOM 已挂载
  • 使用 watch 监听 videoRef.value?.currentTime,需加空值检查和防 NaN 处理
  • 回调中更新 progressValue.value = Math.round(videoRef.value?.currentTime || 0),避免小数抖动
  • 添加 flush: 'post' 选项,确保 DOM 更新后才触发,便于后续尺寸/样式处理

进度条拖动时暂停自动同步,手动跳转后恢复

用户拖动进度条属于“主动控制”,此时应临时停掉对 currentTime 的监听,防止播放器自动推进覆盖用户选择。

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.2万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习