收藏
回答

发现 wx.requestSubscribeMessage 惊天bug ???

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.requestSubscribeMessage 微信安卓客户端 8.0.6 2.17.0

先说bug吧:

form 表单如果包含 textarea, 在bindsubmit 里调用订阅消息接口 wx.requestSubscribeMessage 会报错误 requestSubscribeMessage:fail can only be invoked by user TAP gesture.


------------------------------------------------------------------------------------------------------------------------------------------------------


问题是这样的, 一个简单的表单提交, 提交前 wx.requestSubscribeMessage 申请一下订阅消息, 然后接口出错这样:

requestSubscribeMessage:fail can only be invoked by user TAP gesture.


我就纳闷, 表单提交的事件不是基于点击事件? 啊?

代码:

<!--test.wxml-->
<form bindsubmit="handleSubmit">
  <textarea></textarea>
  <button form-type="submit">submit</button>
</form>


// test.js
handleSubmit(e)
{
    console.log("handleSubmit", e);
    wx.requestSubscribeMessage({
      tmplIds: [
        'your template id 0',
        'your template id 1',
        'your template id 2',
      ],
      success (res) 
      { 
        
      },
      fail (err) 
      {
        console.error(err);
      }
    });
}


搞了半天, 终于让我找到问题的原因: 去掉 textarea 就ok了

回答关注问题邀请回答
收藏

9 个回答

  • 2021-12-07

    我也遇到这个问题,但是我现在把form取消,直接用@click的方式也不行,还是提示这个

    requestSubscribeMessage:fail can only be invoked by user TAP gesture.
    

    而且在微信开发者工具里面可以,在手机上无论是预览还是真机调试都不行,有人知道如何解决吗?

    2021-12-07
    有用 1
    回复 1
    • Héctor2
      Héctor2
      2021-12-08
      按理来说直接监听tap事件是可以的. 你看看是不是异步代码等太久了没有第一时间请求订阅接口?
      2021-12-08
      回复
  • Qiang
    Qiang
    2022-01-12

    我也遇到这个问题,没有解决办法~怎么破

    2022-01-12
    有用
    回复 1
    • Héctor2
      Héctor2
      2022-01-13
      1, 如果表单字段不多, 不使用表单, 自个儿监听每个数据的变化, 这样最快;
      2, 如果非得用表单, 同时监听button的bindtap事件, 在这里做申请订阅消息. 把表单submit事件的逻辑放在订阅消息处理之后进行. 这个流程可以用promise来实现;
      3, 当然还有一种方式, 把订阅和表单提交分开, 就是用户得点两次, 看看你们业务能否接收这么做;
      2022-01-13
      回复
  • 用户
    用户
    2021-11-30

    现在这个bug还没解决。。。。

    2021-11-30
    有用
    回复
  • 欢乐马
    欢乐马
    2021-11-08

    有解决方案么。。。好像不止有textarea不行,连input好像也不行。。。


    ---------------------------------------------


    不是textarea的问题。是不能在form的onSubmit里调用。把button的formType去掉吧,用state记录字段值,然后在button的bindclick是实现submit的代码逻辑即可。!!!!!!

    2021-11-08
    有用
    回复 1
    • Héctor2
      Héctor2
      2021-11-09
      我又不傻, 不用表单当然能解决; 但是不用表单你每个填写字段都得自己去监听, 当然这是另外的问题.
      2021-11-09
      回复
  • MLLM
    MLLM
    2021-11-01

    一样遇到了,只有想办法改程序了

    2021-11-01
    有用
    回复
  • 北京晶珈科技有限公司
    北京晶珈科技有限公司
    2021-10-28

    还没修复,还有获取用户信息的接口也这样,难道非让用户点击两次?用两个按钮切换?

    2021-10-28
    有用
    回复 1
    • Héctor2
      Héctor2
      2021-10-29
      我前后反馈了两次, 官方都没有回复[摊手]
      2021-10-29
      回复
  • 🧸
    🧸
    2021-10-24

    今日发现现在form里仅放个input,ios端都不弹出了,越来越厉害了

    2021-10-24
    有用
    回复 1
    • Héctor2
      Héctor2
      2021-10-26
      [摊手]
      2021-10-26
      回复
  • !!!
    !!!
    2021-07-12

    我遇到了跟你一样的问题

    2021-07-12
    有用
    回复 1
    • Héctor2
      Héctor2
      发表于小程序端
      2021-07-13

      搞不懂这么大bug官方居然完全不管。。。

      2021-07-13
      回复
  • Héctor2
    Héctor2
    发表于小程序端
    2021-06-29

    目前我们的业务必须有textarea,暂时先用button的bindtap里调用订阅消息,再提交表单的方式。

    2021-06-29
    有用
    回复 4
    • Héctor2
      Héctor2
      2021-08-19
      为啥这个bug官方没有任何表示啊? 我猥琐方式解决问题现在很难受啊
      2021-08-19
      回复
    • 北京晶珈科技有限公司
      北京晶珈科技有限公司
      2021-10-28
      太无语了,之前小程序好好的,今天刚升级了下,就完犊子了,很多用户反馈功能不能用,醉了。
      2021-10-28
      回复
    • V_V
      V_V
      2021-11-04回复北京晶珈科技有限公司
      请问有解决访问么?
      2021-11-04
      回复
    • 欢乐马
      欢乐马
      2021-11-08
      不是textarea的问题。是不能在form的onSubmit里调用。把button的formType去掉吧,用state记录字段值,然后在button的bindclick是实现submit的代码逻辑即可。!!!!!!
      2021-11-08
      回复
登录 后发表内容