腾讯云点播TCPlayer需双击视频播放-移动端点击事件处理
H5模式或者移动端真机的场景下,使用腾讯云点播TCPlayer进行播放的时候,需双击视频才可播放、双击视频才可暂停。
原因分析
在移动端跟点击事件相关的问题,需要想到三点
- 第一:与移动端事件主要有touchstart touchmove touchend touchcancel,跟click有区分,而在移动端,手指点击一个元素,会经过:touchstart –> touchmove –> touchend –> click;
- 第二:移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟,其原因主要是移动端的双击会缩放导致click判断延迟;
- 第三:移动端存在点穿问题,发生这种现象的场景主要有两个
(1)当前页面点击蒙层,蒙层消失,蒙层下的dom的点击事件被触发;
(2)跨页面的时候,比如页面A,B都有一个按钮,并且在同一个位置,点击页面A,跳转到页面B会触发点击事件;
综上所述的移动端问题,在常规情况下会使用fastclick来进行解决,简单快捷方便,fastclick的基本实现原理则是:拦截了用户的点击事件,阻止了默认事件,最后执行了自己的事件。
fastclick的实现流程
- 业务正常使用click绑定事件
- 在document.body绑定touchstart和touchend
touchstart
用于记录当前点击的元素targetElement;
touchend
(1)阻止默认事件(屏蔽之后的click事件)
(2)合成click事件,并添加可跟踪属性forwardedTouchEvent
(3)在targetElement上触发click事件
(4)targetElement上绑定的事件立即执行,完成FastClick - 执行业务自己的click事件
打开腾讯云点播TCPlayer引入的js,不难看出,同时监听了touch和click事件,然后这个流程很显然是跟fastclick的实现流程冲突了。
解决方案
1、删除fastclick的使用
2、下载autilTouch.zip,解压开可以得到directives文件夹和touch.js,拷贝至项目的utils文件夹里面。
3、在main.js下去全局使用
1 | import '@/utils/touch' |