码迷,mamicode.com
首页 > 微信 > 详细

小程序通过web-view实现与h5页面之间的交互

时间:2019-09-28 18:19:46      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:targe   read   dev   http   javascrip   tps   之间   java   --   

 

在小程序端使用web-view内嵌网页,通过 src 携带参数,通过 @message 接收h5传回的数据

<template>
    <view>
        <web-view :src="activity.imgUrl?id=xxx" @message="postMessage"></web-view>
    </view>
</template>

 

在h5页面通过 wx.miniProgram.postMessage 可以向小程序传值

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script type="text/javascript">
    wx.miniProgram.postMessage({
        data: foo
    })
</script>

 

但是在实际的开发中会发现,h5不能及时给小程序传值,查找官方文档发现:

网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。

可以人为触发来实现向小程序传值

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script type="text/javascript">
    wx.miniProgram.navigateBack({
        delta: 1
    })
    wx.miniProgram.postMessage({
        data: foo
    })
</script>

 

我在开发的时候遇到一种情况,就是在小程序内嵌页面点击返回的时候,实际上只是关闭了内嵌页面,而当前页面并没有注销,针对这种情况做一下处理:

  在h5页面监听页面关闭

  在小程序手动关闭

<!-- 小程序跳转 -->
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    window.history.pushState(forward, null, ./#forward);
    if (window.history && window.history.pushState) {
        $(window).on(popstate, function() {
            <!-- 页面关闭了 -->
            wx.miniProgram.navigateBack({
                delta: 1
            })
            wx.miniProgram.postMessage({
                data: foo
            })
        });
    }
})
</script>

h5监听页面关闭,然后在给小程序传值,小程序接收到值之后手动注销当前页面

 

小程序通过web-view实现与h5页面之间的交互

标签:targe   read   dev   http   javascrip   tps   之间   java   --   

原文地址:https://www.cnblogs.com/cap-rq/p/11603840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!