首页 > 其他分享 >禁止拖拽 video 标签进度条的实现方式

禁止拖拽 video 标签进度条的实现方式

时间:2023-05-24 10:01:40浏览次数:47  
标签:播放器 currentTime 进度条 video 播放 拖拽 x5

需要考虑以下两个平台:

  • 移动端 H5
  • web应用

H5 上的操作比较复杂,需要考虑微信环境,安卓环境以及 ios 环境,在不同的环境中的表现形式不同。

实现思路主要有如下几种:

  1. 自定义控制条
  2. 使用透明遮罩层遮盖进度条
  3. 播放器会被手机自带播放器拦截,所以跟你设置没设置controls 没有多大关系,爱奇艺、乐视等是让进度条滑动后恢复到原来播放位置,即拖到进度条后无效!
  4. 定时器
  5. 全屏时禁用控制条

定时器

定时器方式

// 禁止拖动进度条
const timer = setInterval(function() {
   const currentTime = video.currentTime
   // console.log(currentTime, originTime)
  if (currentTime - originTime > 1) {
     video.currentTime = originTime
  }
  originTime = currentTime
}, 500)

移动端视频播放特性

内联播放

内联播放指的是视频在文档流中直接进行播放,不会弹出新的播放窗口的方式。

webkit-playsinline 和 playsinline

在手机浏览器和QQ等App中播放H5视频,系统会自动接管进行全屏播放。显然,在很多场景中,我们需要在H5的页面中进行播放,则需要加上webkit-playsinline,在iOS10之后需要加上playsinline。所以,建议同时加上这两个属性。

<video id="video"
  style="object-fit:fill"
  preload="auto"
  webkit-playsinline="true" 
  playsinline 
></video>


腾讯x5内核

android的微信。它使用的是腾讯x5内核,不遵循X5web标准,会强制全屏。

<video id="video"
  style="object-fit:fill"
  preload="auto"

  x5-video-player-type="h5"
  x5-video-player-fullscreen="true"
  x5-video-orientation="portraint"
></video>
  • x5-video-player-type="h5" 启用 H5 同层播放器,也就内联播放。
  • x5-video-player-fullscreen="true" 视频播放时将会进入到全屏模式。
  • x5-video-player-fullscreen="portraint" 声明播放器支持的方向,此属性只在声明了x5-video-player-type="h5" 情况下生效。可选值: landscape 横屏,portrain竖屏; 默认portrain,跟随手机旋转,"landscape|portrait"

iPhone 中全屏播放

使用 iPhone 自带浏览器播放视频时,分别有三种状态:

  1. 在文档流中播放
  2. 页内全屏播放
  3. 全屏播放

文档流中播放,如图:

image.png

页内全屏,如图

其中全屏播放时,由系统内的播放器接管。作用到播放器上的 CSS 代码将不起作用,通过css禁止用于触摸控制条这种方式将不起作用。

禁用全屏按钮

ios 端 微信内置浏览器 设置自动播放视频:

document.addEventListener('WeixinJSBridgeReady',function(){
  video.play();
},false);

标签:播放器,currentTime,进度条,video,播放,拖拽,x5
From: https://blog.51cto.com/codeniu/6337106

相关文章

  • <video>修改封面样式为填充
    视频的默认封面是没有填充满的,可能会留有空白,显得不美观,可以设置样式调整为填充:object-fit:cover 这样就显得好看多了:   ......
  • 聊聊原生拖拽API
    拖拽api是我们前端非常常见的api了,比如拖拽排序,拖拽上传文件,树形结构的生成等等都会用到拖拽api,拖拽api本身不复杂难得是在应用上,下面用一个例子来简单使用下这些api先实现布局如下第一步:我们需要把左侧的元素变成可拖拽的,我们可以使用html属性给元素加一个draggable属性把它......
  • 进度条设置及信息打印(tqdm-python)
    有时候自己写模型训练过程中,想要有点逼格的打印输出显示,可参考本文的方法,本文使用tqdm显示进度条,可实现前面与后面添加内容。总结:语言:python库:tqdm结果:进度条显示,进度条前后可添加信息。 代码如下:if__name__=='__main__':train_loader=100000withtqd......
  • RapidVideOCR(视频硬字幕提取工具)新增exe版
    引言考虑到提取视频字幕的小伙伴大多不是程序员行当,为了降低使用门槛,特此推出界面版的RapidVideOCRDesktop.RapidVideOCRDesktop需要搭配VideoSubFinder使用。它们两个关系如下图所示:flowchartLRA(VideoSubFinder)--提取字幕关键帧-->B(RapidVideOCR)--OCR-->C......
  • 文件上传进度条以及撤回请求实现
    文件上传进度条exportfunctioncloudrtkImport(data,idx,callback,signal){returnrequest({url:"/***********",method:"POST",headers:{Authorization:"Bearer"+sessionStorage.getItem("access_token&qu......
  • JiaoZiVideoPlayer 监听播放按钮
    jZVideoPlayerStandard.startButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){Toast.makeText(mContext,"播放",Toast.LENGTH_SHORT).show();......
  • FlowUs 美观进度条
    渐变进度条if(prop("指标")/prop("总数")<0.1,"⬜️",slice("......
  • vue dom拖拽指令
    还可以封装一下代码,不想封了,移动端pc端区别:事件不同,pc端鼠标事件移动端触摸事件;pc端直接获取e.pageX,移动端e.changedTouches[0].pageX使用直接在dom绑定v-dragdirectives:{drag(el,bindings,vnode){letphone=falseletmax=max||0if(wi......
  • 使用SVG实现进度条
    主要使用了svg的两个属性:stroke-dasharray:通过数组值创建虚线,可填单个或多个值stroke-dasharray='10'//表示生成长度为10、间隔为10的重复虚线stroke-dasharray='10,5'//表示生成长度为10、间隔为5的重复虚线stroke-dasharray='10,5,15'//表示生成长度为10、......
  • 学习video相关事件及vue中监听切出页面方法
    1.vue中监听切出页面方法使用到的事件为:visibilitychangevisibilitychange是浏览器新添加的一个事件,当浏览器当前页面被最小化或切换浏览器其他标签页后者从其他页面或应用返回到当前标签页都会触发这个事件。document.visibilityState共有四个值:hidden:文档处于背景标签......