HarmonyOS 鸿蒙Next Web组件加载视频时无法隐藏下载按钮怎么处理
HarmonyOS 鸿蒙Next Web组件加载视频时无法隐藏下载按钮怎么处理
【问题现象】
正常情况下Web组件通过url加载视频时,默认会提供一个下载按钮:
如上图所示。但是有些场景下,开发者并不希望视频被下载,因此想要隐藏下载按钮。
【背景知识】
HTML5的video标签提有一个属性是 controlsList,这个属性提供了对video额外的控制,使开发者能够控制显示哪些video元素控件。
controlsList属性接受一个空格分隔的字符串,每个字符串代表一个控件的名称。主要可以控制的选项包括:
- nodownload:隐藏下载按钮。
- nofullscreen:隐藏全屏按钮。
- noremoteplayback:隐藏远程播放按钮。
【解决方案】
Web组件没有直接的属性来控制下载按键的隐藏,但是可以通过JS脚本来间接实现。具体方法如下:
(1)首先确认Web组件运行执行JavaScript脚本。(正常情况下默认是允许执行的,可以确认一下是否有更改设置)。
代码示例如下:
Web({
src: ‘url’,
controller: this.webController
})
.javaScriptAccess(true)
(2)在Web组件加载完成后,执行JS脚本,隐藏下载按键。JS脚本的实现原理如下:
- 通过document.querySelector()获取video对象;
- 设置controlsList属性值为nodownload。
代码示例如下:
Web({
src: this.videoUrl,
controller: this.webController
})
.javaScriptAccess(true)
.onPageEnd(() => {
this.webController.runJavaScript(' window.onload = function() {\n' +
' var video = document.querySelector(\'video[name="media"]\');\n' +
' if (video) {\n' +
' video.setAttribute(\'controlsList\', \'nodownload\');\n' +
' }\n' +
' };')
})
最终效果:
1 回复
针对HarmonyOS 鸿蒙Next Web组件加载视频时无法隐藏下载按钮的问题,这里提供一些可能的解决方案:
- CSS样式控制:尽管标准的
<video>
标签不直接支持隐藏下载按钮,但可以尝试通过CSS覆盖默认样式来隐藏按钮。检查是否有特定的CSS伪类或属性可以控制这些按钮的显示。 - JavaScript控制:使用JavaScript监听
<video>
元素的事件,尝试在按钮出现时隐藏它们或禁用其功能。不过,由于这是系统级的行为,可能受限于浏览器的安全策略,因此不一定能成功。 - 检查Web组件配置:确认Web组件的配置是否正确,有时下载按钮的显示可能与Web组件的某些设置有关。
- 使用第三方库:考虑使用如Video.js等第三方视频播放器库,这些库通常提供更丰富的自定义选项,可能允许隐藏下载按钮。
如果尝试了上述方法仍无法解决问题,可能是由于HarmonyOS的特定行为或限制导致的。此时,建议直接参考HarmonyOS的官方文档或更新,以获取最新的解决方案或信息。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。