收藏
回答

小程序webview长按识别企微二维码的事件如何监听?

问题背景:小程序的页面中通过webview嵌套了一个h5页面,该h5页面中可能有多个企业微信二维码名片。客户在小程序中长按,然后弹窗识别企微二维码,进而添加企微。

需求明细:需要统计如下数据,不知道是否支持这些事件的监听?

  1. 用户是否有长按操作
  2. 长按后是否识别出企微名片
  3. 是否查看了企微名片详细内容
  4. 是否点击了添加企业好友
  5. 添加企微好友是否成功
回答关注问题邀请回答
收藏

3 个回答

  • 群聊机器人
    群聊机器人
    2022-03-02

    2022-03-02测试结果:

    1. webview中的长按,确实是没有找到微信官方的事件。但是通过摸索,自己找到了一种hack方案:
    // 原理:长按事件会透传到嵌套的h5页面中,对二维码所在的img标签进行事件绑定
    // 根据测试,长按识别,会触发ontouchstart事件,但是不会触发ontouchend事件
    // 而正常的滑动页面,ontouchstart和ontouchend事件都会触发
    let start = 0, end = 0;
    const img = document.querySelector('img');
    img.ontouchstart = (e) => {
      start = new Date().getTime();
      console.log('start', start);
      end = 0;
      setTimeout(() => {
        if (end - start < 0) {
          console.log('this is longpress');
          // report event
        }
      // 微信官方的长按事件,定义为350ms
      }, 350)
    }
    img.ontouchend = (e) => {
      end = new Date().getTime();
      console.log('end', end);
      console.log('this is slide screen')
    }
    

    2. 如果不是webview的长按,而是使用image的show-menu-by-longpress="true"属性来实现二维码图片的识别,则可以添加事件:bindlongpress(bindtap不会触发)

    2022-03-02
    有用
    回复
  • TNT
    TNT
    2022-03-01

    都不支持。

    2022-03-01
    有用
    回复
  • 微喵网络
    微喵网络
    2022-03-01

    无法监听

    2022-03-01
    有用
    回复
登录 后发表内容