uni-app 升级3.98打包后的包 安卓在webview下 videoFullscreen:'landscape' 视屏横屏无效
uni-app 升级3.98打包后的包 安卓在webview下 videoFullscreen:‘landscape’ 视屏横屏无效
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10家庭版 | HBuilderX |
操作步骤:
- 使用webview打开视频网页
预期结果:
- 能够点击全屏按钮并横屏
实际结果:
- 全屏按钮是灰色的,不可点击
bug描述:
3.97打包后webview能支持横屏,升级3.98打包后又不行了
onReady() {
// #ifdef APP-PLUS
var currentWebview = this.$scope.$getAppWebview() //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效
setTimeout(function() {
wv = currentWebview.children()[0]
wv.setStyle({
hardwareAccelerated:true, //开启硬件加速
cachemode:'cacheElseNetwork',//优先加载缓存
videoFullscreen:'landscape',//视屏横屏无效
plusrequire:"none"//禁止远程网页使用plus的API
})
}, 1000); //如果是页面初始化调用时,需要延时一下
// #endif
}
2 回复
好像不是因为升级的原因,重新安装后又可以了。。。我之前打完包后都是先测试过的,那时候是可以全屏的,然后今天突然发现全屏按钮又变灰了,过几天我再看看
在 uni-app
中,videoFullscreen: 'landscape'
是用于控制视频全屏时方向的配置项。如果你在升级到 uni-app 3.98
后发现该配置在安卓 WebView 下无效,可能是由于以下原因:
1. WebView 兼容性问题
- 不同版本的 WebView 对
videoFullscreen
的支持可能有所不同。某些 WebView 版本可能不支持该配置,或者需要额外的配置才能生效。
2. uni-app 版本问题
uni-app
3.98 版本可能存在一些已知的 bug 或兼容性问题。建议检查官方文档或社区,看看是否有相关的 bug 报告或解决方案。
3. Android 系统限制
- 某些 Android 系统或设备可能对 WebView 中的视频全屏行为有特定的限制,导致
videoFullscreen: 'landscape'
无法生效。
解决方案
1. 检查 WebView 版本
- 确保你的 WebView 是最新版本。你可以通过以下代码检查 WebView 版本:
const webViewVersion = navigator.userAgent.match(/Chrome\/(\d+)/); console.log('WebView version:', webViewVersion ? webViewVersion[1] : 'Unknown');
- 如果 WebView 版本较旧,建议用户更新 WebView 或使用其他浏览器内核。
2. 使用原生插件
- 如果 WebView 无法满足需求,可以考虑使用
uni-app
的原生插件来实现视频全屏横屏播放。例如,使用uni-video
插件或自定义原生代码来控制视频播放。
3. 手动控制屏幕方向
- 你可以通过 JavaScript 手动控制屏幕方向。例如,使用
screen.orientation.lock('landscape')
来锁定屏幕为横屏:if (screen.orientation && screen.orientation.lock) { screen.orientation.lock('landscape').catch(() => { console.log('Failed to lock screen orientation'); }); }
- 注意:
screen.orientation.lock
可能在某些设备或浏览器上不被支持。
4. 降级 uni-app 版本
- 如果问题确实是由于
uni-app 3.98
的 bug 引起的,可以尝试降级到之前的稳定版本,看看问题是否得到解决。
5. 反馈给官方
- 如果以上方法都无法解决问题,建议将问题反馈给
uni-app
官方团队,等待官方修复或提供解决方案。
示例代码
以下是一个简单的示例,展示如何在 uni-app
中控制视频全屏横屏播放:
<template>
<view>
<video
:src="videoSrc"
controls
:fullscreen="true"
@fullscreenchange="onFullscreenChange"
></video>
</view>
</template>
<script>
export default {
data() {
return {
videoSrc: 'https://www.example.com/sample.mp4'
};
},
methods: {
onFullscreenChange(event) {
if (event.detail.fullscreen) {
this.lockLandscape();
} else {
this.unlockOrientation();
}
},
lockLandscape() {
if (screen.orientation && screen.orientation.lock) {
screen.orientation.lock('landscape').catch(() => {
console.log('Failed to lock screen orientation');
});
}
},
unlockOrientation() {
if (screen.orientation && screen.orientation.unlock) {
screen.orientation.unlock();
}
}
}
};
</script>