Taro Video 组件使用onTimeUpdate 方法检测进度条事件

需求目标是:在视频播放过程中,检测用户手动拖动进度条并进行埋点

一开始的想法:进到Taro官网查看Video控件有无直接支持的API, 很遗憾,其他的API(如seek)要么就不支持H5, 要么就是不太合适(如userAction)

百度了以后,发现可以用timeUpdate事件获取到用户观看的当前进度currentTime(是个小数但不是时间戳)和视频总时长(单位为秒),后面两个参数用户实际观看时长和视频总时长(另一个总时长?)怎么都打印不出来,作罢

最后的想法是:timeUpdate是每隔250ms触发一次,在这个时间间隔里,currentTime 变化的幅度不会大于1

       相反,因为进度条显示的最小单位就是秒,所以用户手动调节进度,那么currentTime的变化幅度就一定会大于1

       所以,只要判断上个currentTime 与当前timeUpdate 的入参currentTime 的差值,绝对值大于1的时候,视为手动操纵了进度条

测试: 测试了不同设备下(大概三台设备,安卓苹果都有),用户操纵进度条的事件触发:

        用户正常调节,幅度在1秒到10秒,正常触发一次

        用户按住进度条,来回拖动,正常触发一次

        用户滑动很快,一瞬间划走,正常触发一次

隐患:假如在某个设备,timeUpdate事件不是每250ms触发一次,而是更长间隔,那么此方法不成立,需要手动控制timeUpdate事件触发的间隔,但是官方目前没有这个参数,所以是不是可以试试setTimeOut ? 待尝试

posted @ 2024-02-26 18:13  清尘烟雨  阅读(415)  评论(0)    收藏  举报