5***@qq.com
5***@qq.com
  • 发布:2022-11-29 17:00
  • 更新:2022-12-12 01:27
  • 阅读:360

【报Bug】app-nvue收不到web-view中的@onPostMessage事件【带复现demo工程】

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS Monterey 12.5

HBuilderX类型: Alpha

HBuilderX版本号: 3.6.10

手机系统: 全部

手机厂商: 华为

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

iPhone12 pro 小米4s 红米12pro

示例代码:

index.nvue代码

<template>  
    <web-view style="flex: 1;" src="https://apps.e-forward.cn/webview/test.html" ref="webview" class="webview" @onPostMessage="handlePostMessage" @message="handleMessage"></web-view>  
    <button class="button" @click="evalJs">evalJs(改变webview背景颜色)</button>  
</template>  

<script>  
    export default {  
        methods: {  
            // webview向外部发送消息  
            handlePostMessage: function(data) {  
                console.log("接收到消息 handlePostMessage:" + JSON.stringify(data.detail));  
            },  
            // webview向外部发送消息  
            handleMessage: function(data) {  
                console.log("接收到消息 handleMessage:" + JSON.stringify(data.detail));  
            },  
            // 调用 webview 内部逻辑  
            evalJs: function() {  
                this.$refs.webview.evalJs("document.body.style.background ='#00FF00'");  
            }  
        }  
    }  
</script>  

test.html代码

<!DOCTYPE html>  
<html>  
    <head>  
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />  
        <title>test</title>  
    </head>  
    <body>  
        <h1>测试</h1>  
        <script>  
            window.onerror = function () {  
                // msg,url,line,col,error  
                alert('err => ' + JSON.stringify(arguments))  
            }  
        </script>  
        <script src="uni.webview.1.5.4.js"></script>  
        <script>  
            document.addEventListener('UniAppJSBridgeReady', function() {  
                alert('UniAppJSBridgeReady')  
                uni.postMessage({  
                    data: {  
                        action: 'ready',  
                        msg: 'ok'  
                    }  
                });  
            });  
            window.postMessage('helo', '*');  
        </script>  
    </body>  
</html>

操作步骤:

参考管理员可见附件中的demo文件压缩包

预期结果:

能够收到消息

实际结果:

收不到消息

bug描述:

经过测试vue2(纯nvue模式)、vu3(nvue页面)安卓和ios均有此问题
无法收到网页内的@onPostMessage和@message都收不到

网页内window.postMessage和uni.postMessage 也都试过 也都不行

2022-11-29 17:00 负责人:无 分享
已邀请:
5***@qq.com

5***@qq.com (作者)

应该是新版本的问题,之前的版本没问题,升级到了3.6.10就遇到了这个问题

FullStack

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

我是mac hbx 3.6.10

alert 线程会暂停,我测试了,关闭alert后,可以接收

有需要更强大的原生插件可以看
WebView与原生双向通信交互,支持plus、vue、nvue里的WebView:https://ext.dcloud.net.cn/plugin?id=9832

  • 5***@qq.com (作者)

    一开始是没alert的,也不行。后来才加的alert,并且alert暂停后,点击确定后代码不就继续执行了么

    2022-11-29 17:15

5***@qq.com

5***@qq.com (作者)

有人吗?

5***@qq.com

5***@qq.com (作者)

@DCloud_UNI_Anne @DCloud_UNI_FXY @DCloud_UNI_GSQ

麻烦帮忙看一下

追影和糖糖

追影和糖糖

我也提了,没人理https://ask.dcloud.net.cn/question/158925

追影和糖糖

追影和糖糖

这个问题对我们影响太大了,现在只能使用旧版,啧啧啧~

要回复问题请先登录注册