uniapp 在app和小程序端使用webview进行数据交互

这篇具有很好参考价值的文章主要介绍了uniapp 在app和小程序端使用webview进行数据交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

结论:app端支持比较好可以做到实时传递,微信小程序支持比较差,小程序向url传参只能通过url,url向app传参需要特定时机(后退、组件销毁、分享、复制链接)触发才能收到消息。

以下是代码

  1. app端(需要使用nvue)
    <template>  
        <view class="webview-box">  
                <button style="z-index: 999;" @click="handlePostMessage('app向url传值')">点击向url传值</button>
                <web-view ref="webview" class="webview" src="http://192.168.18.103:8080/index?os=wx" @onPostMessage="PostMessage"></web-view>  
            </view>  
    </template>  
    <script>  
        export default {  
            data() {  
                return {  
                                    url:'http://192.168.18.103:8080/index?os=wx'
                }  
            },  
            onLoad() {  
                        this.url += '&t=' + new Date().getTime()
            },  
            methods: {  
                // 接收h5页面发来的键值判断需要执行的操作  
                PostMessage(evt) {  
                    console.log("postMessage: ", evt)
                                    uni.showModal({
                                        title:"提示",
                                        content:evt.detail.data[0].msg
                                    })
                },  
                // 获取到对应webview(关键)通过evalJs(注意大小写,如果不知道evalJ是什么,可自行百度) 执行网页的函数,可对其进行传参,完成与网页的通讯  
                handlePostMessage(res) {  
                                console.log("22")
                    this.$refs.webview.evalJs(`handleMessage('${res}')`);  
                }  
            }  
        }  
    </script>  
    
    <style>  
        .webview-box {  
            position: absolute;  
            left: 0px;  
            right: 0px;  
            top: 0px;  
            bottom: 0px;  
        }  
    
        .webview {  
            flex: 1; 
                     height: 300rpx;
        }  
    </style> 
    
  2. 微信小程序端(正常vue格式)
    <template>  
        <view class="webview-box">  
                <web-view ref="webview" class="webview" :src="url" @onPostMessage="PostMessage" @message="PostMessage"></web-view>  
            </view>  
    </template>  
    <script>  
        export default {  
            data() {  
                return {  
                                    url:'http://192.168.18.103:8080/index?os=wx'
                }  
            },  
            onLoad() {  
                        this.url += '&t=' + new Date().getTime()
            },  
            methods: {  
                // 接收h5页面发来的键值判断需要执行的操作  
                PostMessage(evt) {  
                    console.log("postMessage1: ", evt)  
                },  
                // 获取到对应webview(关键)通过evalJs(注意大小写,如果不知道evalJ是什么,可自行百度) 执行网页的函数,可对其进行传参,完成与网页的通讯  
                handlePostMessage(res) {  
                                console.log("22")
                }  
            }  
        }  
    </script>  
    
    <style>  
        .webview-box {  
            position: absolute;  
            left: 0px;  
            right: 0px;  
            top: 0px;  
            bottom: 0px;  
        }  
    
        .webview {  
            flex: 1; 
                     height: 300rpx;
        }  
    </style> 
    

    3、html端文章来源地址https://www.toymoban.com/news/detail-589711.html

    <!doctype html>
    <html lang="ch" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no,viewport-fit=cover">
        <title>默认的title</title>
        <!-- 微信 JS-SDK 如果不需要兼容小程序,则无需引用此 JS 文件。 -->  
        <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>  
        <!-- uni 的 SDK,必须引用。 -->  
        <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
    
        <body>
            <div id="box"></div>
            <div class="btn" >点击1</div>
            <button id="to_shiming">向上传递数据</button>
           
        </body>
        <script>  
                
            // 在引用依赖的文件后,需要在 HTML 中监听 UniAppJSBridgeReady 事件触发后,才能安全调用 uni 的 API。  
            document.addEventListener('UniAppJSBridgeReady', function() {
    
            // 下面就是js知识了,点击某个按钮后发消息。
            document.getElementById('to_shiming').addEventListener('click', function() {
    
                // 这里调用uniapp的api执行消息发送
                uni.postMessage({
                    data: {
                        msg:'url向app传值'
                    }
                });
            });
            });
            window.handleMessage = function(msg){
                console.log("接收到消息",msg);
                alert("接收到消息"+msg);
                document.getElementById('box').innerText = msg;
                        }
    
        </script>
    </head>
        
    
    </html>
    

到了这里,关于uniapp 在app和小程序端使用webview进行数据交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp实现自定义导航内容高度居中(兼容APP端以及小程序端与胶囊对齐)

    ①效果图如下 1.小程序端与胶囊对齐 2.APP端内容区域居中     注意:上面使用的是colorui里面的自定义导航样式。 ②思路: 1.APP端和小程序端走不同的方法,因为小程序端要计算不同屏幕下右侧胶囊的高度。 2.其次最重要的要清晰App端和小程序端的计算逻辑。 3.然后调用api获

    2024年02月13日
    浏览(38)
  • uniapp小程序端使用腾讯地图

    一、获取腾讯地图密钥 1. 找到腾讯地图API 腾讯地图A地址PI 注册并登录后点击 开发文档 选择 微信小程序JavaScript SDK 进入后按照 Hello world! 中的步骤进行 2. 申请密钥 点击上面第一步中的 申请密钥 ,进入我的应用,在创建应用中输入创建的名称和类型 创建成功后点击 添加

    2024年02月16日
    浏览(31)
  • uniapp+unicloud开发一个网页端,小程序端,APP端,桌面端的博客CMS系统——万能的三三

    做为一个开发者,怎么能没有一个自己的博客呢? 都说现在是小程序,APP时代了,显然只有网页端已经跟不上时代了,于是乎就想找一个免费的能同时支持网页端,小程序,APP的博客系统... 于是花了一点点时间,没找到合适的... 好吧,那既然自己是开发者,那为什么不能自

    2024年01月25日
    浏览(27)
  • uniapp app的webview与h5交互操作

    app里的webview与h5交互操作,需要在h5页面加点代码,然后才能执行app里的方法 官方地址 在nvue页面里才能实现与h5的交互,设置webview的高度

    2024年02月11日
    浏览(35)
  • uniapp webview交互以及h5传参到app

    app端,onPostMessage在nvue页面下接受参数,message在vue页面下接受参数 链接后拼接传参,只在一开始能传 方法传参 H5端,我这是用vue2写的 在index.html页面加上这个 在首页接受参数 往APP传参 接受APP的方法传参,变量跟data里面的变量绑定

    2024年02月16日
    浏览(32)
  • uniapp webview h5和app交互通信传参

    app端,onPostMessage在nvue页面下接受参数,message在vue页面下接受参数 链接后拼接传参,只在一开始能传 方法传参 H5端,我这是用vue2写的 在index.html页面加上这个 在首页接受参数 往APP传参 接受APP的方法传参,变量跟data里面的变量绑定

    2024年02月15日
    浏览(78)
  • uniapp(微信小程序端)生成海报--snapshot 的使用(不确定版本)

    1. 在manifest.json 里面 微信小程序设置里面添加这几段设置 2. 在你海报页面(page.json)设置 ,必须要设置自定义标题栏 3. 去微信小程序的文档里面搜索snapshot(组件组件组件里面找) 然后翻到最下面示例代码片段,然后点开,把他的代码复制到你得项目里面去,如果是vue3setup写法, 另外创

    2024年04月29日
    浏览(35)
  • uniapp使用中遇到的问题一:小程序端把当前页面另存为图片

    遇到了一个这样的需求:客户觉得页面效果好看,想保存为图片。但是呢,截图会带上手机自身的状态栏,所以开始整活! 在网上看了很多方法,总结下来一下四种: 方法一:用canvas来把页面画出来,再用uni.canvasToTempFilePath,把canvas区域保存为图片。 总结:如果你页面简单

    2024年04月15日
    浏览(25)
  • uniapp 实现富文本编辑器【小程序端】

    css资源文件戳该链接:富文本css文件链接 编辑菜单我搞成吸顶效果了,方便手机编辑不用再滑到头部点编辑菜单:css实现元素吸顶效果 ————————————————————————————————————————————

    2024年02月16日
    浏览(45)
  • uniapp,小程序端返回上一页并传递参数

    使用场景: 从A页面跳到B页面,在数据操作后要返回A页面(使用uni.navigateBack()返回), 要求: 携带参数返回A页面,不使用链接带参数返回,不用使用缓存:uni.setStorageSync()储存数据等情况下怎么传递参数 可使用解决方案: 方法一:使用getCurrentPages() 函数获取上一页面栈的

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包