uniapp B站iframe嵌入APP及视频全屏不横屏问题处理 Android端

这篇具有很好参考价值的文章主要介绍了uniapp B站iframe嵌入APP及视频全屏不横屏问题处理 Android端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:视频界面能进入全屏,但视频不横屏

方法一:视频界面设置允许横屏,手机竖屏锁定取消。(未采用)

效果及问题:全屏后,手机横屏后,视频会横屏。但取消全屏后,视频界面还是横屏着,体验不太好。

# pages.json文件

# 对应界面设置允许横屏 "pageOrientation": :"auto"
{
    "path" : "xxxx/video",
	"style": {
		"navigationBarTitleText": "视频详情",
		"enablePullDownRefresh": true,
		"pageOrientation": "auto",
		"app-plus": {
			"bounce": "none", 
			"titleNView": {
			    "titleAlign":"left"
		    }
	     }
     }
},

方法二:视频界面设置允许横屏,通过onResize监听窗口尺寸变化(全屏生效时,标题栏会隐藏,导致窗口高度会增加;退出全屏时,标题栏会出现,导致窗口高度会减小),将界面强制设置横屏或竖屏。(采用)

效果及问题:手机竖屏锁定激活也能横屏,取消全屏后会回到竖屏。只适用于Android 端,iOS要使用其他方案,测试用的是Android 12。

# pages.json文件
#同上

# 视频详情文件video.vue
<template>
	<view class="videoPage">
		<iframe
		class="video"
		id="videoIframeId"
		:src='`https://${dtlData.videoUrl}`'
		frameborder="no"
		scrolling="no"
		border="0"
		framespacing="0"
		allowfullscreen="true"
		></iframe>
    </view>
</template>

<script>
	export default {
		data() {
			return {
				dtlData: {
					videoUrl: 'player.bilibili.com/player.html?aid=230937449&bvid=BV1c8411Q7Gd&cid=1196481814&page=1',
				},
				initHeight: 0,
				onceFlag: true,
				landscapeInitHeight: 0,
				landscapeOnceFlag: true,
			}
		},
		onLoad(options){
			// #ifdef APP-PLUS
			plus.screen.lockOrientation('portrait-primary');
			// #endif
		},
		// 监听窗口尺寸变化
		onResize(e) {
			// return
			// 总共会出现4种窗口高度
			// 竖屏时高度(例如: 799)  全屏竖屏时高度(815,隐藏了页面标题部分)  全屏横屏时高度(313)  退出全屏横屏时高度(297,露出了页面标题部分)

			// #ifdef APP-PLUS
				const windowHeight = e.size.windowHeight // windowHeight不包含NavigationBar和TabBar的高度(即不包含状态栏、页面标题部分外的高度)
				// 首次进入竖屏界面时需记录一下 窗口高度(竖屏时高度)
				if (this.onceFlag) {
					this.onceFlag = false
					this.initHeight = windowHeight
				}

				const deviceLandscapeFlag = e.deviceOrientation === 'landscape'
				// 首次进入全屏(横屏)时记录一下 窗口高度(全屏横屏时高度)
				// 进行竖屏-->横屏的动作时,高度变化 799-->815-->313
				if (this.landscapeOnceFlag && deviceLandscapeFlag) {
					this.landscapeOnceFlag = false
					this.landscapeInitHeight = windowHeight
				}
				console.log(windowHeight, this.initHeight, this.landscapeInitHeight, 77);
				// windowHeight === this.initHeight  当前窗口高度 === 初始竖屏窗口高度 则表示进入了竖屏状态
				// deviceLandscapeFlag && windowHeight < this.landscapeInitHeight  为退出全屏横屏状态(即露出了页面标题部分,高度:313-->297)
				if (windowHeight === this.initHeight || (deviceLandscapeFlag && windowHeight < this.landscapeInitHeight)) {
					plus.screen.lockOrientation('portrait-primary');
					return
				}
				plus.screen.lockOrientation('landscape-primary'); //锁定横屏
			// #endif
		},
		onUnload(){
			// #ifdef APP-PLUS
			plus.screen.lockOrientation('portrait-primary'); //锁死屏幕方向为竖屏
			// #endif
		},
		methods: {
		}
	}
</script>

<style lang="scss" scoped>
.videoPage {
	position: relative;
	padding-bottom: 70%;
}
.video {
	position: absolute;
	width: 100%;
	height: 100%;
	left: 0;
	top: 0;
}
</style>

部分效果图:

uniapp控制iframe的video,uni-app,android

uniapp控制iframe的video,uni-app,android

 文章来源地址https://www.toymoban.com/news/detail-769373.html

 

到了这里,关于uniapp B站iframe嵌入APP及视频全屏不横屏问题处理 Android端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp小程序点击按钮打开图片/全屏播放视频组件

    根据传入的数组list来决定打开图片还是全屏播放视频,还有横竖屏等初始预设参数 组件.vue utils.js 欢迎交流~~

    2024年02月13日
    浏览(47)
  • uni-app 轮播图视频+图片 视频图片全屏预览 两种方法

    在做商城项目的时候,商品详情的轮播图需要同时显示视频和图片,并且能够全局预览 如果项目里有uview这个组件库,可以通过swiper轮播图的指定类型进行解决,点击这里进行跳转 也可以通过uni-app自带的swiper去解决这个问题,点击这里进行跳转 就目前的两种方案,第二种方

    2024年02月12日
    浏览(104)
  • html实现iframe全屏

    html浏览器全屏操作,基于jquery iframe全屏、指定标签全屏 css html 关键是lay-dbclick-box和lay-dbclick-screen,其中的iframe是内容 js

    2024年02月11日
    浏览(33)
  • 如何Uniapp中嵌入H5,并且在H5中跳转到APP的指定页面

    有一个需求是,在app中嵌入一个H5页面,H5是一个网络页面,不在app项目里,APP可以打开H5页面,实现单点登录,并且在H5 页面中打开APP指定的页面 在uniapp中,有一个web-view组件,这就相当于一个浏览器组件,可以用来承载网页的容器,会自动铺满整个页面 web-view的详细文档参

    2024年02月04日
    浏览(62)
  • 怎样录屏不带水印?分享一款无水印录制视频软件!

    案例:怎样录制无水印的视频? 【我平常录制的录屏带有软件自带水印,这样十分影响观感。怎样才能录制无水印的视频?】 一款好的录屏软件,可以更好地帮助我们录制电脑屏幕上的操作或是制作教学视频。然而,很多录屏软件录制的视频都带有水印,这会让录制的视频

    2024年02月06日
    浏览(39)
  • uniapp实现手机横屏(方法二)

    在 manifest.json 文件中,将 \\\"deviceOrientation\\\" 属性设置为 \\\"auto\\\" ,这样整个应用程序将支持横屏显示。 在需要横屏显示的页面的 script 标签中,添加 onShow 生命周期函数,并在函数中调用 uni.setScreenOrientation({ orientation: \\\'landscape\\\' }) 方法,将页面设置为横屏显示。 如果需要在页面退出

    2024年02月19日
    浏览(35)
  • uniapp小程序设置页面横屏

    1.设置单个页面横屏 1.在pages.json中对应的页面配置添加: 2.设置整个小程序页面横屏 在 globalStyle 中添加 3.横屏后字体样式都会变大 解决:使用px 代替 rpx ;  注意 1px = 2rpx 效果图  

    2024年02月16日
    浏览(39)
  • uniapp实现app端图片+视频轮播

    需求 :swiper轮播里面,可能有图片也可能有视频。当swiper切换到视频时,视频以动画的样式展示(无按钮、进度条等默认播放控件),自动轮播取消,手动滑动切换取消。当视频播放完毕后,可以自动轮播,可以手动滑动切换。 找了个插件市场里的改的。( 感谢大佬的插件

    2024年02月02日
    浏览(30)
  • uniapp-app的视频轮播图

    直接使用swiper做图片轮播图是没有问题的,视频轮播图的兼容性仅仅体现在APP上。 我的方法是将nvue页面作为视频的遮罩层,如果直接将视频放到nvue页面,说不定也可以。其实这个兼容性的关键在于video标签在手机上的层级过高,除了nvue,还有其他方法解决。 因为我的这个项

    2023年04月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包