1***@qq.com
1***@qq.com
  • 发布:2022-02-14 15:46
  • 更新:2022-02-15 15:39
  • 阅读:436

【报Bug】IOS15.1,webview的@message没有触发,安卓以及开发者工具可以触发

分类:uni-app

产品分类: uniapp/小程序/百度

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 家庭中文版

HBuilderX类型: 正式

HBuilderX版本号: 3.3.11

第三方开发者工具版本号: 3.49.1

基础库版本号: 3.310.35

项目创建方式: HBuilderX

示例代码:

uniapp代码

<template>  
    <view class="container">  
        <web-view v-if="src" :src="src" @message="message"></web-view>  
    </view>  
</template>  
<script>  
    export default {  
        components: {},  
        data() {  
            return {  
                src: "",  
            }  
        },  
        onLoad(param) {  
            this.src = param.src;  
        },  
        onShow() {},  
        onReady() {  
            // #ifdef H5  
            window.addEventListener("message", this.message, false)  
            // #endif   
        },  
        onUnload() {},  
        methods: {  
            message(e) {  
                                // 开发者工具、安卓手机在退出webview后都可以触发@message事件  
                                // ios 15.1 在退出webview后没有触发@message事件  
                console.log('message', e);  

            },  
        }  
    }  
</script>  
<style lang="scss" scoped>  
</style>

h5链接的js代码

<!DOCTYPE html>  
<html lang="en">  

<head>  
    <meta charset="UTF-8">  
    <meta http-equiv="X-UA-Compatible" content="IE=edge">  
    <meta name="viewport"  
        content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
    <title></title>  
    <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.9.0/vconsole.min.js"></script>  
    <script>  
        var vConsole = new VConsole();  
    </script>  
</head>  
<style>  
    body {  
        background-color: #fff6da;  
        margin: 10px;  
    }  

    .content {  
        margin-top: 40px;  
    }  

    .title {  
        margin: 20px 0;  
        color: #7C5252;  
        text-align: center;  
        font-weight: bold;  
    }  
    #btn-submit {  
        width: 100%;  
        height: 45px;  
        line-height: 45px;  
        color: #FFFFFF;  
        border-radius: 25px;  
        background-color: #E87777;  
        border: none;  
    }  
    .editor {  
        margin-bottom: 20px;  
        border-radius: 20px;  
    }  
    .w-e-toolbar {  
        border-top-left-radius: 10px;  
        border-top-right-radius: 10px;  
    }  
    .w-e-text-container {  
        border-bottom-left-radius: 10px;  
        border-bottom-right-radius: 10px;  
    }  
</style>  
<body>  
<video style="display: none;"></video>  
    <!-- 頭部 -->  
    <div id="header"></div>  

    <div class="content">  
        <button id="btn-submit">确定</button>  
    </div>  
</body>  

<script type="text/javascript">  
    var userAgent = navigator.userAgent;  
    if (userAgent.indexOf('AlipayClient') > -1) {  
        // 支付宝小程序的 JS-SDK 防止 404 需要动态加载,如果不需要兼容支付宝小程序,则无需引用此 JS 文件。  
        document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>');  
    } else if (/QQ/i.test(userAgent) && /miniProgram/i.test(userAgent)) {  
        // QQ 小程序  
        document.write(  
            '<script type="text/javascript" src="https://qqq.gtimg.cn/miniprogram/webview_jssdk/qqjssdk-1.0.0.js"><\/script>'  
        );  
    } else if (/miniProgram/i.test(userAgent) && /micromessenger/i.test(userAgent)) {  
        // 微信小程序 JS-SDK 如果不需要兼容微信小程序,则无需引用此 JS 文件。  
        document.write('<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"><\/script>');  
    } else if (/toutiaomicroapp/i.test(userAgent)) {  
        // 头条小程序 JS-SDK 如果不需要兼容头条小程序,则无需引用此 JS 文件。  
        document.write(  
            '<script type="text/javascript" src="https://s3.pstatp.com/toutiao/tmajssdk/jssdk-1.0.1.js"><\/script>');  
    } else if (/swan/i.test(userAgent)) {  
        // 百度小程序 JS-SDK 如果不需要兼容百度小程序,则无需引用此 JS 文件。  
        document.write(  
            '<script type="text/javascript" src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.18.js"><\/script>'  
        );  
    } else if (/quickapp/i.test(userAgent)) {  
        // quickapp  
        document.write('<script type="text/javascript" src="https://quickapp/jssdk.webview.min.js"><\/script>');  
    }  
    if (!/toutiaomicroapp/i.test(userAgent)) {  
        // document.querySelector('.post-message-section').style.visibility = 'visible';  
    }  
</script>  
<!--<script type="text/javascript" src="https://gitee.com/dcloud/uni-app/raw/master/dist/uni.webview.1.5.2.js"></script>-->  
<script type="text/javascript" src="/static/js/common/uni.webview.1.5.2.js"></script>  
<script type="text/javascript">  
    document.addEventListener('UniAppJSBridgeReady', function () {  

        console.log('UniAppJSBridgeReady');  
        document.getElementById('btn-submit').addEventListener('click', function () {  
            console.log('postMessage');  
            // 开发者工具、安卓手机在退出webview后都可以触发@message事件  
            // ios 15.1 在退出webview后没有触发@message事件  
            uni.postMessage({  
                data: {  
                    action: 'message'  
                }  
            });  
        });  
    });  
</script>  
</html>

操作步骤:

uniapp编译为百度小程序,然后选择真机调试,真机操作系统为ios15.1版本

预期结果:

打印h5页面传来的值

实际结果:

没有任何打印,应该是没有触发事件

bug描述:

发现问题的手机操作系统版本:IOS15.1版本,其他IOS版本暂没测试

ios 15.1 在退出webview后没有触发@message事件
开发者工具、安卓手机在退出webview后都可以触发@message事件

2022-02-14 15:46 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

提供完整的demo,方便排查

该问题目前已经被锁定, 无法添加新回复