uni-app x5 内核 webview H5页面视频播放全屏按钮灰色 无法全屏

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app x5 内核 webview H5页面视频播放全屏按钮灰色 无法全屏

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 Windows 10
HBuilderX类型 正式
HBuilderX版本号 3.99
手机系统 Android
手机系统版本号 Android 11
手机厂商 小米
手机机型 MI 9
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  1. 新建默认模板
  2. index.vue 添加 webview,<web-view src=""></web-view>
  3. 勾选“Android X5 Webview(腾讯TBS)”并打包

预期结果:

x5内核下,H5页面内视频可以全屏播放

实际结果:

x5内核下,H5页面内视频无法全屏播放

bug描述:

勾选“Android X5 Webview(腾讯TBS)”并启用 X5 内核,webview 内 H5 <video> 标签控制栏全屏按钮是灰色的,无法全屏。 查看离线包 webview-x5-release.aar 后发现 X5WebJsEvent.class 内未实现 WebChromeClient 的 onShowCustomViewonHideCustomView,原因可能出在这里。 希望官方提供x5 视频播放全屏实现或者解决方案

Image


1 回复

uni-app 中使用 X5 内核的 WebView 加载 H5 页面时,如果视频播放的全屏按钮是灰色且无法点击,可能是由于以下原因导致的:

1. X5 内核的全屏限制

X5 内核(腾讯浏览服务的内核)对视频播放有一些特殊的限制,特别是全屏播放。默认情况下,X5 内核可能不允许通过 JavaScript 控制全屏播放,或者需要特定的配置才能启用全屏功能。

2. H5 页面的全屏 API 问题

H5 页面中使用的全屏 API 可能与 X5 内核不兼容。通常情况下,H5 页面会使用 requestFullscreen 方法来触发全屏,但 X5 内核可能不支持这种方式。

3. X5 内核的全屏模式配置

X5 内核默认使用自己的视频播放器(TBS 内核播放器),而不是原生的 HTML5 视频播放器。因此,可能需要通过配置来启用全屏功能。

解决方案

1. 启用 X5 内核的全屏功能

uni-appmanifest.json 中,可以配置 X5 内核的相关设置,启用全屏功能:

{
  "app-plus": {
    "webview": {
      "x5": {
        "videoFullscreen": true
      }
    }
  }
}

这个配置会启用 X5 内核的视频全屏功能。

2. 使用 X5 内核的视频播放器

X5 内核提供了自己的视频播放器,可以通过以下方式强制使用 X5 的视频播放器:

<video controls x5-video-player-type="h5" x5-video-player-fullscreen="true">
  <source src="your-video.mp4" type="video/mp4">
</video>

通过添加 x5-video-player-typex5-video-player-fullscreen 属性,可以强制使用 X5 的视频播放器,并启用全屏功能。

3. 检查 H5 页面的全屏逻辑

如果你在 H5 页面中使用了自定义的全屏逻辑,确保它与 X5 内核兼容。你可以尝试使用 X5 内核提供的全屏 API 来触发全屏:

if (window.navigator.userAgent.indexOf('TBS') > -1) {
  // 使用 X5 内核的全屏 API
  videoElement.requestFullscreen = videoElement.webkitRequestFullscreen || videoElement.mozRequestFullScreen || videoElement.msRequestFullscreen;
  videoElement.requestFullscreen();
} else {
  // 使用标准的全屏 API
  videoElement.requestFullscreen();
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!