监听timeupdate方法,得到的时间值是个有点类似随机数的一个值。
比如我想在60.33s这个精确点时间点来实现视频的暂停,使用timeupdate方法就无法实现这个功能
只能判断当前的时间是否大于60.33,这个时候实际上视频的播放进度已经超过了60.33这个时间点。
如何才能做到在精确的时间点上暂停呢?
我是想做到视频从0开始播放,当播放到60.33s时出现暂停,这个时间既不会提前也不会延后。
监听timeupdate方法,得到的时间值是个有点类似随机数的一个值。
比如我想在60.33s这个精确点时间点来实现视频的暂停,使用timeupdate方法就无法实现这个功能
只能判断当前的时间是否大于60.33,这个时候实际上视频的播放进度已经超过了60.33这个时间点。
如何才能做到在精确的时间点上暂停呢?
我是想做到视频从0开始播放,当播放到60.33s时出现暂停,这个时间既不会提前也不会延后。
很精确到是做不到的。
我是这么实现的,额外定义一个变量,在超过这个时间点后,判断是否暂停(预览弹窗等需求),暂停(预览)过,则继续播放。
小于这个时间点则设置为,未暂停(未预览)状态。
比如我有三条数据,time代表要暂停的时间点,hasView代表是否看过。
let list = [
{time: 10, hasView: false},
{time: 20, hasView: false},
{time: 30, hasView: false},
]
核心代码
video.addEventListener('timeupdate', () => {
list.forEach(e => {
if (e.hasView && video.currentTime < e.time) {
e.hasView = false
}
if (!e.hasView && video.currentTime >= e.time && myVid.currentTime < e.time + 0.5) { // 误差控制在0.5s内
e.hasView = true
myVid.pause()
}
})
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
要在60.33处暂停,在timeupdate中监听时间大于59.33(60.33-1),然后算出当前时间和目标时间的差值。再使用定时器函数来执行暂停,时间间隔就是刚才算出来的差值