解决video更多选项按钮点击无反应以及操控video标签的控制按钮

在一个项目中使用原生video时, 点击右下侧 更多按钮时无反应,找了很多文章没有发现类似问题的解决方案

image.png

后面就想把更多按钮隐藏掉,但是只能找到隐藏 全屏按钮 和 画中画的隐藏方式 后面找到了可以通过shadow DOM 看到被隐藏的 DOM ,发现更多选项按钮其实是被点击了,但是弹出的菜单定位发生了问题,导致无法看到,如下图把bottom改为0,更多选项的菜单就会出现,但是我没有找到修改样式的方法,只能去掉视频的下载和画中画功能,让更多选项按钮消失

image.png

下面是其他按钮的样式操作以及shadow DOM
shadow DOM就是浏览器创建的在DOM子树。简单来说,它是一系列的DOM元素,跟熟悉的div span一样,只不过shadow DOM是浏览器添加的文档片段(document fragment)并且能够像DOM树一样在页面中得到渲染。下面引用James Edwards的话简要概括一下影子DOM的作用: 影子DOM通过创建文档片段的形式高效地封装内容,影子DOM的内容是特殊的文档,会通过合并到主文档的方式来创建所有被渲染的内容。 实际上一些浏览器已经通过影子DOM的方式来渲染浏览器的插件

1.查看shadow DOM 打开控制台只有video DOM,没有播放 暂停等元素的信息,其实video标签的控制栏就是浏览器创建的shadow DOM

image.png

2.查看shadow DOM (1)在控制设定如下(Chrome)

image.png

image.png

(2)shadow DOM信息如下
在这里插入图片描述

伪元素为::-webkit-media-controls,通过名字我们就已经知道这是和视频控制栏相关联的标签。然后我们可以通过设置display:none !important覆盖样式来将它隐藏就是这么简单;

// // 播放按钮
video::-webkit-media-controls-play-button {
  display: none !important;
}
// 当前播放时间
video::-webkit-media-controls-current-time-display {
  display: none !important;
}
// 剩余时间
video::-webkit-media-controls-time-remaining-display {
  display: none !important;
}
// 音量按钮
video::-webkit-media-controls-volume-control-container {
  display: none !important;
}
// 全屏
video::-webkit-media-controls-fullscreen-button {
  display: none !important;
}
// 时间轴
video::-webkit-media-controls-timeline {
  display: none !important;
}
// 更多选项 --然而并不生效
video::-internal-media-controls-overflow-button {
  display: none !important;
}
// 设定disablePictureInPicture属性,隐藏画中画; controlsList="nodownload" 隐藏下载按钮,
隐藏画中画和下载按钮之后  *更多选项按钮*  会自动消失

各位小伙伴有更好的解决方法 欢迎评论讨论

### HTML5 Video 标签全屏按钮灰色无法点击解决方案 对于HTML5 `video`标签中的全屏按钮呈现灰色且不可点击的情况,通常是因为浏览器或容器未能正确识别并处理全屏请求。针对不同环境下的具体实现方式有所不同。 #### Android WebView 中的Video播放控制 当在Android应用内的WebView组件中遇到此问题时,在`AndroidManifest.xml`文件中为对应的Activity设置硬件加速属性可以有效改善视频渲染效果以及交互功能: ```xml <activity ... android:hardwareAccelerated="true"> </activity> ``` 此外,还需确保WebView配置允许JavaScript执行,并启用插件支持以兼容更多类型的多媒体内容[^4]。 #### iframe嵌入网页情况下的调整 如果是在通过`iframe`元素引入外部资源的情况下发现该现象,则应确认`iframe`标记包含了必要的权限声明来激活全屏模式的支持: ```html <iframe src="example.html" allowfullscreen="true" webkitallowfullscreen="true" mozallowfulnesscreen="true"></iframe> ``` 这些参数确保了跨平台的一致性,特别是移动端设备上的表现[^3]。 #### Vue H5项目中的特殊注意事项 对于基于Vue框架构建的应用程序而言,除了上述通用措施外,还需要注意路径解析的问题。例如,静态资源链接应当采用绝对路径而非相对路径,防止因打包部署等原因造成资源加载失败进而影响到控件的状态: ```html <!-- 错误示范 --> <video src="@/assets/video/demo.mp4" controls></video> <!-- 正确做法 --> <video :src="'./static/videos/demo.mp4'" controls></video> ``` 同时建议检查网络状态和服务器响应头信息,排除由于CORS策略限制或其他因素引起的访问障碍[^2]。 综上所述,解决HTML5 `video`标签全屏按钮失效的关键在于适当配置宿主环境(如WebView),合理设定HTML结构及其属性值,并妥善管理媒体文件的位置与获取途径。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值