Taro Video 組件使用onTimeUpdate 方法檢測(cè)進(jìn)度條事件
需求目標(biāo)是:在視頻播放過(guò)程中,檢測(cè)用戶(hù)手動(dòng)拖動(dòng)進(jìn)度條并進(jìn)行埋點(diǎn)
一開(kāi)始的想法:進(jìn)到Taro官網(wǎng)查看Video控件有無(wú)直接支持的API, 很遺憾,其他的API(如seek)要么就不支持H5, 要么就是不太合適(如userAction)
百度了以后,發(fā)現(xiàn)可以用timeUpdate事件獲取到用戶(hù)觀看的當(dāng)前進(jìn)度currentTime(是個(gè)小數(shù)但不是時(shí)間戳)和視頻總時(shí)長(zhǎng)(單位為秒),后面兩個(gè)參數(shù)用戶(hù)實(shí)際觀看時(shí)長(zhǎng)和視頻總時(shí)長(zhǎng)(另一個(gè)總時(shí)長(zhǎng)?)怎么都打印不出來(lái),作罷
最后的想法是:timeUpdate是每隔250ms觸發(fā)一次,在這個(gè)時(shí)間間隔里,currentTime 變化的幅度不會(huì)大于1
相反,因?yàn)檫M(jìn)度條顯示的最小單位就是秒,所以用戶(hù)手動(dòng)調(diào)節(jié)進(jìn)度,那么currentTime的變化幅度就一定會(huì)大于1
所以,只要判斷上個(gè)currentTime 與當(dāng)前timeUpdate 的入?yún)urrentTime 的差值,絕對(duì)值大于1的時(shí)候,視為手動(dòng)操縱了進(jìn)度條
測(cè)試: 測(cè)試了不同設(shè)備下(大概三臺(tái)設(shè)備,安卓蘋(píng)果都有),用戶(hù)操縱進(jìn)度條的事件觸發(fā):
用戶(hù)正常調(diào)節(jié),幅度在1秒到10秒,正常觸發(fā)一次
用戶(hù)按住進(jìn)度條,來(lái)回拖動(dòng),正常觸發(fā)一次
用戶(hù)滑動(dòng)很快,一瞬間劃走,正常觸發(fā)一次
隱患:假如在某個(gè)設(shè)備,timeUpdate事件不是每250ms觸發(fā)一次,而是更長(zhǎng)間隔,那么此方法不成立,需要手動(dòng)控制timeUpdate事件觸發(fā)的間隔,但是官方目前沒(méi)有這個(gè)參數(shù),所以是不是可以試試setTimeOut ? 待嘗試

浙公網(wǎng)安備 33010602011771號(hào)