学不会学不会j 2023-07-14 10:23 采纳率: 0%
浏览 22

uniapp和webview外部网页双向通信,求解

在uniapp和webview外部网页双向通信的两段代码,能够做到在外部的html中向app通信,但是还是无法做到app向html通信,最终的想法是,外部网页用vue文件,但我的vue文件又无法引入uniwebview方法(主要是不会,不知道这个能不能行,所以暂时用html去验证通信功能)求解一下该怎么做


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>webviewApp通信测试</title>
</head>
<body>
    <div class="post-message-section">
      
        <div class="btn-list">
            <button class="btn btn-red" type="button" id="postMessage">postMessage</button>
        </div>
    </div>
    <script type="text/javascript" src="./components/dingweirun/uniwebview.js"></script>
    <script type="text/javascript">
        document.addEventListener('UniAppJSBridgeReady', function () {
            uni.postMessage({
                data: {
                    action: 'message'
                }
            });
            uni.getEnv(function (res) {
                console.log('当前环境:' + JSON.stringify(res));
            });
        //     document.addEventListener('UniAppJSBridgeReady', function () {
        //     uni.postMessage({
        //         data: {
        //             action: 'postMessage'
        //         }
        //     });
        // });
        document.getElementById('postMessage').addEventListener('click', function() {
                    console.log('发送通信消息', uni)
                    uni.postMessage({
                        data: {
                            action: 'back',
                            name :'aaaa'
                        }
                    });
                });
        });
        
    </script>

</body>

</html>

这个是uniapp的文件


<template>
    <view>
        <!-- ../../hybrid/html/map.html -->
        <!-- http://127.0.0.1:5173/ -->
        <!-- http://192.168.199.139:5173/tests -->
        <web-view src="http://192.168.168.87:5173/src/index.html" class="aaa" @message="handleMessage"></web-view>
    <!--     <view class="btntop">
            <button @click="ding">app</button>
        </view> -->
    </view>
</template>
<script>
    export default {
        data() {
            return {
    
            }
        },
        methods: {
            handleMessage(evt) {
                console.log('app接收到的消息:', evt.detail.data[0].action);
                uni.showModal({
                    content: JSON.stringify(evt.detail.data)
                })
                // if (evt.detail.data[0].action == 'back') {
                //     uni.navigateBack({
                //         delta: 1
                //     })
                // }
            }
        }
    }
</script>
<style>
    body {
        margin: 0;
        padding: 0;


    }

    .aaa {
        width: 100%;
        height: 89vh;

    }

    .btntop {

        width: 50px;
        height: 50px;
        font-size: 5px;
        text-align: center;
        position: absolute;
        top: 25%;
        left: 15%;

        z-index: 1;
    }
</style>
  • 写回答

2条回答 默认 最新

  • 前端-海鸟 2023-07-14 10:35
    关注
    <template>
        <view>
            <web-view ref="webview" class="webview" @onPostMessage="handlePostMessage"></web-view>
            <button class="button" @click="evalJs">evalJs(改变webview背景颜色)</button>
        </view>
    </template>
    
    <script>
        export default {
            data: {
            },
            methods: {
                // webview向外部发送消息
                handlePostMessage: function(data) {
                    console.log("接收到消息:" + JSON.stringify(data.detail));
                },
                // 调用 webview 内部逻辑,也可以在这里发送数据
                evalJs: function() {
                    this.$refs.webview.evalJs("document.body.style.background ='#00FF00'");
                }
            }
        }
    </script>
    
    评论

报告相同问题?

问题事件

  • 创建了问题 7月14日

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费