流云决
流云决
  • 发布:2023-06-23 19:01
  • 更新:2023-06-25 08:56
  • 阅读:320

【报Bug】webview在h5端正常,app端不正常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 11

HBuilderX类型: 正式

HBuilderX版本号: 3.8.6

手机系统: Android

手机系统版本号: Android 11

手机厂商: OPPO

手机机型: realmex

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

<template>
<view>

    <iframe :src="url" style="position: fixed;z-index: 999;left: 0;border:none;" :style="{'height':screenHeight+'px','width':screenWidth+'px','top':statusBar+'px'}"></iframe>  
    <!-- <web-view :src="url" style="position: fixed;z-index: 999;left: 0;" :style="{'height':screenHeight+'px','width':screenWidth+'px','top':statusBar+'px'}"></web-view> -->  
    <!-- <view class="back-btn center" @click="navBack" :style="{'background-color':$theme.mainColor}">  
        <text class="cuIcon-close icon-fanhui"></text>  
    </view> -->  

</view>  

</template>

<script>
var wv; //计划创建的webview

let BackBtn = null;  
export default {  
    data() {  
        return {  
            url: '',  
            statusBar: this.StatusBar,  
            screenHeight: this.screenHeight-this.StatusBar,  
            screenWidth: this.screenWidth  
        }  
    },  

    onLoad(options) {  
        this.url = "https://fastgpt.run/";  

        console.log(this.url)  
        // #ifdef APP-PLUS  
    //  wv = plus.webview.create("", "custom-webview", {  
    //      plusrequire: "none", //禁止远程网页使用plus的API,有些使用mui制作的网页可能会监听plus.key,造成关闭页面混乱,可以通过这种方式禁止  
    //      'uni-app': 'none', //不加载uni-app渲染层框架,避免样式冲突  
    //      top: uni.getSystemInfoSync().statusBarHeight + 10 //放置在titleNView下方。如果还想在webview上方加个地址栏的什么的,可以继续降低TOP值  
    //  })  
    //  wv.loadURL(options.url)  
    //  var currentWebview = this.$scope  
    // .$getAppWebview(); //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效,非v3编译模式使用this.$mp.page.$getAppWebview()  
    //  currentWebview.append(wv); //一定要append到当前的页面里!!!才能跟随当前页面一起做动画,一起关闭  

        // #endif  
    },  
    // #ifdef APP-PLUS  
    onReady() {  
        this.createBackBtn();  

    },  
    onUnload() {  
        BackBtn.close();  
    },  
    // #endif  
    methods: {  
        createBackBtn() {  
            BackBtn = new plus.nativeObj.View('BackBtn', {  
                bottom: '82px',  
                left: uni.upx2px(650) + 'px',  
                width: uni.upx2px(60) + 'px',  
                height: uni.upx2px(60) + 'px',  
                backgroundColor: 'rgba(0,0,0,0)',  
                position: 'absolute'  
            })  
            BackBtn.draw([{  
                tag: 'img',  
                id: 'backicon',  
                src: '/static/system/close_web.png',  
                position: {  
                    top: '0px',  
                    left: '0px',  
                    width: uni.upx2px(60) + 'px',  
                    height: uni.upx2px(60) + 'px',  
                }  
            }])  

            BackBtn.show();  
            BackBtn.addEventListener('click', () => {  
                this.navBack();  
            }, false)  
        },  
        navBack() {  
            this.backPage()  
        }  
    }  
}  

</script>

<style scoped lang="scss">
.back-btn {
position: fixed;
right: 30rpx;
text-align: center;
top: 40rpx;
z-index: 9999;
width: 50rpx;
height: 50rpx;
line-height:50rpx;
border-radius: 200rpx;
// background: linear-gradient(to right top, #db2b36, #fa725d);
/ box-shadow: 2rpx 2rpx 10rpx rgba(228,63,66,.65) /
}

.icon-fanhui {  
    font-size: 30rpx;  
    color: #fff;  
}  

</style>

操作步骤:

代码复现

预期结果:

正常展示

实际结果:

页面展示,但是报错js,点击无效

bug描述:

H5正常,
打包安卓App就不正常
我试了iframe,webview,原生api创建webview三种方式,都不行,页面的js报错,导致页面不正常加载,点击无反应。

为什么h5可以,安卓不行呢?????

2023-06-23 19:01 负责人:无 分享
已邀请:
流云决

流云决 (作者)

测试了开了和没有开X5 webview都不行(开关操作后已经重新云打包打了基座)

流云决

流云决 (作者)

最新发现,苹果app可以,只有安卓端不可以!

BoredApe

BoredApe - 有问题就会有答案。

上传一个能直接重现问题的测试工程

要回复问题请先登录注册