淘寶小程序組件踩坑

一、video

需求是有三個按鈕,點擊不同的按鈕會切換不同的視頻,代碼如下

<video id="myVideo" src="{{ newVideo[0].videoUrl }}" controls="{{false}}" show-mute-btn="{{false}}" autoplay="{{true}}" initial-time="{{userPlayDuration}}" onPlay="onPlayNew" onPause="onPauseNew" onTimeUpdate="onTimeUpdateNew" onEnded="onEndedNew" />

場景是隱藏視頻進(jìn)度條等一些視頻控件,實現(xiàn)點擊視頻1就暫停再次點擊就再次播放視頻1,切換到按鈕2時保存上一條視頻1的播放進(jìn)度,并自動播放當(dāng)前視頻2,重新點擊按鈕1,續(xù)播視頻1,保存視頻2進(jìn)度,大致就這樣。

然后我采用了initial-time參數(shù)來控制視頻開始播放前的指定播放起始時間,通過onTimeUpdate事件監(jiān)聽播放進(jìn)度并將用戶播放進(jìn)度賦值給userPlayDuration,一套操作下來,實現(xiàn)了場景需求,但后續(xù)測試發(fā)現(xiàn),安卓機(jī)型下一切正常,ios機(jī)型則會出現(xiàn)視頻一直轉(zhuǎn)圈加載的情況,就是播放一幀轉(zhuǎn)圈一下。

通過log打印發(fā)現(xiàn),問題原因是onPlay事件一直在被重復(fù)調(diào)用,安卓則不會發(fā)生上述情況,經(jīng)過長時間排查,發(fā)現(xiàn)是initial-time的原因。初步認(rèn)為是video組件在安卓和ios的運行機(jī)制不一致,ios可能是通過監(jiān)聽initial-time的值來執(zhí)行onPlay事件,由于userPlayDuration在onTimeUpdate事件中一直被賦值,導(dǎo)致ios機(jī)型一直在執(zhí)行onPlay事件。

既然找到了問題,那么后續(xù)解決方法也很簡單,不在onTimeUpdate事件中做賦值操作,僅進(jìn)行存值操作,通過my.setStorageSync({key: 'userPlayDuration',data: e.detail.userPlayDuration})進(jìn)行本地存值,在點擊按鈕視頻播放時通過my.getStorageSync({key:'userPlayDuration'}).data對userPlayDuration進(jìn)行賦值,至此解決問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容