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

Posted 我若亦如风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序通过web-view实现与h5页面之间的交互相关的知识,希望对你有一定的参考价值。

 

在小程序端使用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页面之间的交互的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序web-view环境下H5跳转小程序页面方法

微信小程序web-view与H5 通信方式探索

小程序与H5如何互相跳转

微信小程序web-view , 嵌入H5页面

微信小程序web-view , 嵌入H5页面

小程序总结(十五)- 关于web-view嵌套的H5页面的分享功能