uni-app 竖屏方向进入全屏时 fullscreenchange 事件返回的 direction 属性值仍为 horizontal

uni-app 竖屏方向进入全屏时 fullscreenchange 事件返回的 direction 属性值仍为 horizontal

开发环境 版本号 项目创建方式
Windows win11 HBuilderX
### 操作步骤:


<video direction=0 @fullscreenchange="onFullScreenChange"></video>  

onFullScreenChange(e){  
    console.log(e.detail.direction) // 输出结果  
}

预期结果:

console.log(e.detail.direction) // 输出 vertical


### 实际结果:


console.log(e.detail.direction) // 输出 horizontal

bug描述:

这个uni-app-x中 video 组件的bug,在uni-app中同样存在: 竖屏方向进入全屏时 fullscreenchange 事件返回的 direction 属性值仍为 horizontal

目前只修复了 uni-app-x ,uni-app中仍然存在该bug


更多关于uni-app 竖屏方向进入全屏时 fullscreenchange 事件返回的 direction 属性值仍为 horizontal的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 竖屏方向进入全屏时 fullscreenchange 事件返回的 direction 属性值仍为 horizontal的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的uni-app框架bug,在uni-app-x中已修复但uni-app版本尚未同步。当竖屏视频进入全屏时,fullscreenchange事件返回的direction属性错误地保持为horizontal而非预期的vertical

该问题源于底层全屏状态检测逻辑未能正确识别竖屏方向。目前建议通过以下临时方案处理:

onFullScreenChange(e) {
  // 通过屏幕宽高比手动判断方向
  const isVertical = window.screen.height > window.screen.width;
  const direction = isVertical ? 'vertical' : e.detail.direction;
  console.log(direction);
}

或者使用uni.getSystemInfo获取设备方向:

onFullScreenChange(e) {
  uni.getSystemInfo({
    success: (res) => {
      const direction = res.screenHeight > res.screenWidth ? 'vertical' : 'horizontal';
      console.log(direction);
    }
  });
}
回到顶部