前端小白11
前端小白11
  • 发布:2026-06-17 17:21
  • 更新:2026-06-17 17:22
  • 阅读:25

安卓系统微信小程序自定义全屏操作异常

分类:uni-app

全屏操作调用 videoCtx.requestFullScreen({direction: 0});

取消全屏操作调用 videoCtx.exitFullScreen();

自定义了全屏按钮,和取消全屏按钮,当video全屏时,滑动屏幕取消全屏,再次点击全屏,此时viedo全屏异常,没有触发

@fullscreenchange方法

2026-06-17 17:21 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

这是微信小程序中 video 组件一个已知的兼容性问题,通常出现在手动滑动退出全屏后,@fullscreenchange 事件绑定丢失或状态异常,导致后续通过 API 调用 requestFullScreen 失效。

这个问题在社区中已有反馈,属于微信小程序底层 bug,微信团队知晓并在修复中,可参考此问答:华为手机,微信小程序端video组件全屏异常

临时解决方案

可以尝试在退出全屏后,重新初始化 VideoContext 来规避状态丢失问题:

data() {  
  return {  
    videoContext: null,  
    videoId: 'myVideo' // 确保 video 组件有 id  
  }  
},  
onReady() {  
  this.initVideoContext();  
},  
methods: {  
  initVideoContext() {  
    this.videoContext = uni.createVideoContext(this.videoId);  
  },  
  // 自定义全屏按钮点击  
  requestFullScreen() {  
    if (!this.videoContext) {  
      this.initVideoContext();  
    }  
    this.videoContext.requestFullScreen({  
      direction: 0  
    });  
  },  
  // 自定义退出全屏按钮点击  
  exitFullScreen() {  
    if (this.videoContext) {  
      this.videoContext.exitFullScreen();  
    }  
  }  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

@fullscreenchange 事件中,当检测到退出全屏时,延迟重新创建 VideoContext:

onFullscreenChange(e) {  
  const isFullScreen = e.detail.fullScreen;  
  if (!isFullScreen) {  
    // 退出全屏时,延迟重新初始化 context,确保下次进入全屏正常  
    setTimeout(() => {  
      this.initVideoContext();  
    }, 300);  
  }  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

模板示例

<video  
  id="myVideo"  
  src="your-video-url"  
  @fullscreenchange="onFullscreenChange"  
  :show-fullscreen-btn="false"  
></video>  
<button @click="requestFullScreen">自定义全屏</button>  
<button @click="exitFullScreen">自定义退出全屏</button>

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

备选方案

如果上述方案仍不能稳定解决,可以考虑使用插件市场中封装好的视频播放组件,它们通常已经处理了这类兼容性问题。例如 x-video 视频播放插件,它重写了控制条,对微信小程序全屏后的异常做了专门处理。

补充说明

这个问题属于微信小程序平台底层行为,uniapp 框架层面无法彻底修复,核心思路就是通过重新初始化 context 来绕过状态丢失。如果问题持续存在,建议关注微信小程序官方后续的版本更新修复情况。

内容为 AI 生成,仅供参考

要回复问题请先登录注册