HarmonyOS 鸿蒙Next Web组件加载视频时无法隐藏下载按钮怎么处理

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 鸿蒙OS

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组件加载视频时无法隐藏下载按钮的问题,这里提供一些可能的解决方案:

  1. CSS样式控制:尽管标准的<video>标签不直接支持隐藏下载按钮,但可以尝试通过CSS覆盖默认样式来隐藏按钮。检查是否有特定的CSS伪类或属性可以控制这些按钮的显示。
  2. JavaScript控制:使用JavaScript监听<video>元素的事件,尝试在按钮出现时隐藏它们或禁用其功能。不过,由于这是系统级的行为,可能受限于浏览器的安全策略,因此不一定能成功。
  3. 检查Web组件配置:确认Web组件的配置是否正确,有时下载按钮的显示可能与Web组件的某些设置有关。
  4. 使用第三方库:考虑使用如Video.js等第三方视频播放器库,这些库通常提供更丰富的自定义选项,可能允许隐藏下载按钮。

如果尝试了上述方法仍无法解决问题,可能是由于HarmonyOS的特定行为或限制导致的。此时,建议直接参考HarmonyOS的官方文档或更新,以获取最新的解决方案或信息。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部