zoukankan      html  css  js  c++  java
  • 微信小程序的坑之wx.miniProgram.postMessage

    工作中有个需求是小程序的网页在关闭的时候,需要回传给小程序一个参数

    查阅小程序官方文档,有这样一个接口 wx.miniProgram.postMessage ,可以用来从网页向小程序发送消息,然后通过 bindmessage 事件来监听消息,如下是官方文档描述


    微信小程序相关文章

    以下是代码:

    
    // 网页代码
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
            <title>postMessage</title>
        </head>
    
        <body>
            <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: '获取成功' })
                
                wx.miniProgram.navigateBack({delta: 1})
            </script>
        </body>
    </html>
    
    
    
    // 小程序代码
    <web-view bindmessage="handleGetMessage" src="test.html"></web-view>
    
    Page({
      handleGetMessage: function(e) {
        console.log(e.target.data)
      }
    })
    

    写完试了下,期待打印 “获取成功” ,而实际小程序里面啥也没打印。。。

    然后仔细看官方文档,发现有这句话:

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

    也就是只有在小程序后退、组件销毁、分享时才会触发

    所以应该改变 postMessage 的时机,调换顺序就可以了

    
    <script type="text/javascript">
        wx.miniProgram.navigateBack({delta: 1})
        
        wx.miniProgram.postMessage({ data: '获取成功' })
    </script>
    

    这样再试试,发现能正常捕获消息了

    原文地址:https://segmentfault.com/a/1190000016717727

  • 相关阅读:
    CAS简介
    Volatile的3大特性
    dsf对矩阵进行搜索
    JVM
    REST风格
    自定义Starters(自动配置Bean)
    反射和注解的原理
    mybatis的注解开发
    Java的多线程安全
    mybatis(3)
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9906566.html
Copyright © 2011-2022 走看看