uni-app在自定义组件中内嵌H5/Html网页,加载不闪屏, 自定义webview大小

在uni-app中使用web-view组件加载H5/Html时会出现铺满屏幕无法控制大小以及在App端切换时的闪屏问题。通过动态创建webview并利用wv.close()或wv.hide()可以有效解决这些问题,实现自定义webview大小并避免闪屏现象。
摘要由CSDN通过智能技术生成

在自定义组件中内嵌H5/Html网页时,通过内置组件 web-view 实现(如下),发现会自动铺满整个页面,不可控制大小(默认充满屏幕不可控制大小)


<web-view src="https://uniapp.dcloud.io/static/web-view.html"></web-view>

有多个tab页面时(多个自定义组件切换时),调整webview窗口大小,会出现闪屏的现象

<template>
    <view class="content">
        <web-view class="webb" src="https://uniapp.dcloud.io/static/web-view.html"></web-view>
    </view>
</template>
<script>
    var wv;
    export default {
   
        data() {
   
            return {
   
            }
        },
        mounted() {
   
            // #ifdef APP-PLUS
                    var currentWebview = this.$parent.$scope.$getAppWebview() //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效,非v3编译模式使用this.$mp.page.$getAppWebview()
                    setTimeout(function() {
   
                        wv = currentWebview.children()[0]
                        wv.setStyle({
   top:150,height:300})
                    }, 1000); //如果是页面初始化调用时,需要延时一下
                    // #endif
        },
        beforeDestroy() {
   
        },
        methods: {
   
        }
    }
</script>
<style lang="scss">
    .content{
   
        width: 100%;
        height: calc(100vh - var(--status-bar-height) - 45px - 45px - 3px);
    }
    .webb{
   
        margin-top: calc(var(--status-bar-height) + 45px + 45px + 3px);
    }
</style>

上述方法在App端切换时,会出现闪屏现象

解决方法:

动态创建添加webview的方式来加载H5/Html网页,代码如下:

<template>
    <view class="content">
    </view>
</template>
<script>
    var wv;
    export default {
   
        data() {
   
            return {
   
            }
        },
        mounted() {
   
            // #ifdef APP-PLUS
            wv = plus.webview.create("","webview",{
   
                plusrequire:"none", //禁止远程网页使用plus的API,有些使用mui制作的网页可能会监听plus.key,造成关闭页面混乱,可以通过这种方式禁止
                //'uni-app': 'none', //不加载uni-app渲染层框架,避免样式冲突
                top:uni.getSystemInfoSync().statusBarHeight+93 //放置在titleNView下方。如果还想在webview上方加个地址栏的什么的,可以继续降低TOP值
            })
            wv.loadURL<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小豆包3D世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值